﻿//*******************************************************************************************************
//*																										*
//*		文件：D3D9TypesZhongWen.h																		*
//*																										*
//*		说明：对d3d9types.h进行汉化。																	*
//*			  使用该汉化可能会导致程序效率变低。														*
//*																										*
//*		拓展：您可访问，并且强烈推荐您访问Micorsoft官方文档。											*
//*			  以获取更详细的解说及演示代码。															*
//*			  https://learn.microsoft.com/zh-cn/windows/win32/direct3d9/dx9-graphics-reference-d3d		*
//*																										*
//*******************************************************************************************************
#include "default.h"
#ifndef _D3D9TYPESZHONGWEN_H_ABCDE_
#define _D3D9TYPESZHONGWEN_H_ABCDE_

//关于警告禁用与内存对齐相关代码，无需汉化
#if _MSC_VER >= 1200
#pragma warning(push)
#endif
#pragma warning(disable:4201) // anonymous unions warning
#if defined(_X86_) || defined(_IA64_)
#pragma pack(4)
#endif


typedef D3DCOLOR 颜色值;

// 颜色构造
#define 颜色_ARGB(a,r,g,b) \
    ((颜色值)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
#define 颜色_RGBA(r,g,b,a) 颜色_ARGB(a,r,g,b)
#define 颜色_XRGB(r,g,b)   颜色_ARGB(0xff,r,g,b)

// 视频专用颜色格式
#define 颜色_XYUV(y,u,v)   颜色_ARGB(0xff,y,u,v)
#define 颜色_AYUV(a,y,u,v) 颜色_ARGB(a,y,u,v)

// 浮点数转换宏
#define 颜色_浮点值 D3DCOLOR_COLORVALUE

#define 三维向量	D3DVECTOR    // 三维向量(x,y,z)
#define 矩阵		D3DMATRIX    // 4x4变换矩阵
#define 矩形区		D3DRECT      // 矩形区域(x1,y1,x2,y2)

// D3DVIEWPORT9
typedef struct _视口参数 {
	DWORD X;
	DWORD Y;        
	DWORD 宽 ;	//Width
	DWORD 高 ;	// Height
	float 最小深度 ;	// MinZ
	float 最大深度 ;	// MaxZ
} 视口参数;
//在使用时可能需要显式转换：(D3DVIEWPORT9)视口参数;

// ===== 裁剪系统 =====
// 最大支持的裁剪平面数量
#define 最大裁剪平面数 D3DMAXUSERCLIPPLANES

// 裁剪平面启用位掩码（保留数字编号）
#define 裁剪平面_0 D3DCLIPPLANE0  // 第0位：平面0启用 (1 << 0)
#define 裁剪平面_1 D3DCLIPPLANE1  // 第1位：平面1启用 (1 << 1)
#define 裁剪平面_2 D3DCLIPPLANE2  // 第2位：平面2启用 (1 << 2)
#define 裁剪平面_3 D3DCLIPPLANE3  // 第3位：平面3启用 (1 << 3)
#define 裁剪平面_4 D3DCLIPPLANE4  // 第4位：平面4启用 (1 << 4)
#define 裁剪平面_5 D3DCLIPPLANE5  // 第5位：平面5启用 (1 << 5)

// ===== 裁剪状态 =====
// 裁剪区域标志（保留位运算特性）
#define 裁剪_左边界   D3DCS_LEFT      // 0x00000001L
#define 裁剪_右边界   D3DCS_RIGHT     // 0x00000002L
#define 裁剪_顶部     D3DCS_TOP       // 0x00000004L
#define 裁剪_底部     D3DCS_BOTTOM    // 0x00000008L
#define 裁剪_近平面   D3DCS_FRONT     // 0x00000010L
#define 裁剪_远平面   D3DCS_BACK      // 0x00000020L
#define 裁剪_平面0    D3DCS_PLANE0    // 0x00000040L
#define 裁剪_平面1    D3DCS_PLANE1    // 0x00000080L
#define 裁剪_平面2    D3DCS_PLANE2    // 0x00000100L
#define 裁剪_平面3    D3DCS_PLANE3    // 0x00000200L
#define 裁剪_平面4    D3DCS_PLANE4    // 0x00000400L
#define 裁剪_平面5    D3DCS_PLANE5    // 0x00000800L

// 全裁剪区域组合宏（保持多行书写格式）
#define 裁剪_全部区域 D3DCS_ALL

// D3DCLIPSTATUS9
typedef struct _裁剪状态 {
    DWORD 当前裁剪并集 ;  // ClipUnion
    DWORD 当前裁剪交集 ;  // ClipIntersection
} 裁剪状态 ;

// ===== 材质与光照 =====
// D3DMATERIAL9
typedef struct _材质 {
    颜色值   漫反射 ;       // 漫反射颜色(RGBA)
    颜色值   环境光 ;       // 环境光颜色(RGB)
    颜色值   镜面反射 ;     // 镜面高光颜色
    颜色值   自发光 ;       // 自发光颜色(RGB)
    float    高光强度 ;     // 镜面高光锐度
} 材质 ;

// D3DLIGHTTYPE
typedef enum _光源类型 {
    点光源       = D3DLIGHT_POINT,
    聚光灯       = D3DLIGHT_SPOT,
    平行光       = D3DLIGHT_DIRECTIONAL,
    光源类型枚举标识 = D3DLIGHT_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 光源类型 ;

// D3DLIGHT9
typedef struct _光源{
    光源类型	光源类型 ;      // 光源种类选择
    颜色值		漫反射光 ;      // 光源漫反射颜色
    颜色值		镜面反射光 ;    // 光源镜面反射颜色
    颜色值		环境光强度 ;    // 光源环境光颜色
    三维向量	光源位置 ;      // 世界坐标系中的位置
    三维向量	照射方向 ;      // 世界坐标系中的方向
    float		有效范围 ;      // 光照作用最大距离
    float		衰减过渡 ;      // 聚光灯边缘过渡参数
    float		常量衰减 ;      // 光照强度恒定衰减
    float		线性衰减 ;      // 随距离线性衰减
    float		二次衰减 ;      // 随距离平方衰减
    float		内锥角 ;        // 聚光灯内部锥角(弧度)
    float		外锥角 ;        // 聚光灯外部锥角(弧度)
} 光源 ;

// 清除标志
#define 清除目标表面   D3DCLEAR_TARGET    // 清除渲染目标表面
#define 清除深度缓冲   D3DCLEAR_ZBUFFER   // 清除深度缓冲区
#define 清除模板缓冲   D3DCLEAR_STENCIL   // 清除模板缓冲区

// ===== 渲染 =====
// D3DSHADEMODE
typedef enum _着色模式枚举 {
    平面着色	= D3DSHADE_FLAT,      // 单色平面渲染
    高洛德着色	= D3DSHADE_GOURAUD,   // 顶点颜色插值
    冯氏着色	= D3DSHADE_PHONG,     // 需要硬件支持
    着色模式枚举标识 = D3DSHADE_FORCE_DWORD  // 确保枚举为32位，通常不使用。
} 着色模式枚举 ;

// D3DFILLMODE
typedef enum _填充模式枚举 {
    点状填充     = D3DFILL_POINT,      // 仅绘制顶点
    线框填充     = D3DFILL_WIREFRAME,  // 绘制线框轮廓
    实体填充     = D3DFILL_SOLID,      // 完全填充表面
    填充模式枚举标识 = D3DFILL_FORCE_DWORD  // 确保枚举为32位，通常不使用。
} 填充模式枚举 ;

// D3DBLEND
typedef enum _混合因子 {
    零值             = D3DBLEND_ZERO,               // (0, 0, 0, 0)
    一值             = D3DBLEND_ONE,                // (1, 1, 1, 1)
    源颜色           = D3DBLEND_SRCCOLOR,           // RGB = 源颜色
    反选源颜色       = D3DBLEND_INVSRCCOLOR,        // RGB = 1-源颜色
    源透明度         = D3DBLEND_SRCALPHA,           // A = 源透明度
    反选源透明度     = D3DBLEND_INVSRCALPHA,        // A = 1-源透明度
    目标透明度       = D3DBLEND_DESTALPHA,          // A = 目标透明度
    反选目标透明度   = D3DBLEND_INVDESTALPHA,       // A = 1-目标透明度
    目标颜色         = D3DBLEND_DESTCOLOR,          // RGB = 目标颜色
    反选目标颜色     = D3DBLEND_INVDESTCOLOR,       // RGB = 1-目标颜色
    源透明度饱和     = D3DBLEND_SRCALPHASAT,        // A = 源Alpha截断至0或1
    双源透明度混合   = D3DBLEND_BOTHSRCALPHA,       // 同时设置源/目标Alpha
    双反选源透明度   = D3DBLEND_BOTHINVSRCALPHA,    // 反选双源Alpha
    自定义混合因子   = D3DBLEND_BLENDFACTOR,        // 需硬件支持混合因子（←D3DPBLENDCAPS_BLENDFACTOR）功能，下同
    反选自定义因子   = D3DBLEND_INVBLENDFACTOR,     // 1-自定义混合因子

// D3D9Ex特有功能的条件编译
#if !defined(D3D_DISABLE_9EX)
    第二源颜色       = D3DBLEND_SRCCOLOR2,          // 仅D3D9Ex支持
    反选第二源颜色   = D3DBLEND_INVSRCCOLOR2,       // 仅D3D9Ex支持
#endif // !D3D_DISABLE_9EX

    混合因子枚举标识 = D3DBLEND_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 混合因子 ;

// D3DBLENDOP
typedef enum _混合操作 {
    结果叠加     = D3DBLENDOP_ADD,        // 源+目标
    正向相减    = D3DBLENDOP_SUBTRACT,   // 源-目标
    反向相减    = D3DBLENDOP_REVSUBTRACT,// 目标-源
    取最小值    = D3DBLENDOP_MIN,        // min(源,目标)
    取最大值    = D3DBLENDOP_MAX,        // max(源,目标)
    混合操作枚举标识 = D3DBLENDOP_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 混合操作 ;

// D3DTEXTUREADDRESS
typedef enum _纹理寻址模式 {
    重复纹理    = D3DTADDRESS_WRAP,       // 平铺重复
    镜像重复    = D3DTADDRESS_MIRROR,     // 镜像翻转平铺
    钳制到边缘  = D3DTADDRESS_CLAMP,      // 边缘拉伸
    使用边框色  = D3DTADDRESS_BORDER,     // 超出部分显示边框颜色
    单次镜像    = D3DTADDRESS_MIRRORONCE, // 单次镜像后钳制
    纹理寻址枚举标识 = D3DTADDRESS_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 纹理寻址模式 ;

// D3DCULL
typedef enum _面剔除模式枚举 {
    不剔除      = D3DCULL_NONE,           // 显示所有三角形
    剔除顺时针面= D3DCULL_CW,             // 剔除顺时针环绕的面
    剔除逆时针面= D3DCULL_CCW,            // 默认剔除模式
    面剔除枚举标识 = D3DCULL_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 面剔除模式枚举 ;

// D3DCMPFUNC
typedef enum _比较函数 {
    总不通过    = D3DCMP_NEVER,           // 永远返回false
    小于时通过  = D3DCMP_LESS,            // 源 < 目标
    等于时通过  = D3DCMP_EQUAL,           // 源 == 目标
    小于等于通过= D3DCMP_LESSEQUAL,       // 源 <= 目标
    大于时通过  = D3DCMP_GREATER,         // 源 > 目标
    不等于通过  = D3DCMP_NOTEQUAL,        // 源 != 目标
    大于等于通过= D3DCMP_GREATEREQUAL,    // 源 >= 目标
    总是通过    = D3DCMP_ALWAYS,          // 永远返回true
    比较函数枚举标识 = D3DCMP_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 比较函数 ;

// D3DSTENCILOP
typedef enum _模板操作 {
    保持原值    = D3DSTENCILOP_KEEP,      // 不修改模板值
    置零        = D3DSTENCILOP_ZERO,      // 将模板值设为0
    替换为参考值 = D3DSTENCILOP_REPLACE,   // 使用参考值替换
    饱和递增    = D3DSTENCILOP_INCRSAT,   // 增加到255后保持
    饱和递减    = D3DSTENCILOP_DECRSAT,   // 减少到0后保持
    按位取反    = D3DSTENCILOP_INVERT,    // 二进制按位取反
    循环递增    = D3DSTENCILOP_INCR,      // 255时归零递增
    循环递减    = D3DSTENCILOP_DECR,      // 0时跳转255递减
    模板操作枚举标识 = D3DSTENCILOP_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 模板操作 ;

// D3DFOGMODE
typedef enum _雾化模式 {
    无雾效      = D3DFOG_NONE,            // 禁用雾效
    指数雾      = D3DFOG_EXP,             // 标准指数衰减
    二次方指数雾= D3DFOG_EXP2,            // 更陡峭的指数衰减
    线性雾      = D3DFOG_LINEAR,          // 线性距离衰减
    雾化模式枚举标识 = D3DFOG_FORCE_DWORD // 确保枚举为32位，通常不使用。
} 雾化模式 ;

// D3DZBUFFERTYPE
typedef enum _深度缓冲 {
    禁用深度测试= D3DZB_FALSE,            // 关闭深度检测
    启用Z缓冲  = D3DZB_TRUE,              // 标准Z-Buffer
    使用W缓冲  = D3DZB_USEW,              // 使用W值代替Z值
    深度缓冲枚举标识 = D3DZB_FORCE_DWORD  // 确保枚举为32位，通常不使用。
} 深度缓冲 ;

// ===== 图元与变换矩阵 =====
// D3DPRIMITIVETYPE
typedef enum _图元 {
    点列表         = D3DPT_POINTLIST,      // 绘制独立点集
    线段列表       = D3DPT_LINELIST,       // 每两个顶点构成线段
    线段带         = D3DPT_LINESTRIP,      // 连续线段首尾相连
    三角形列表     = D3DPT_TRIANGLELIST,   // 每三个顶点构成三角形
    三角形带       = D3DPT_TRIANGLESTRIP,  // 共享边的连续三角形
    三角形扇       = D3DPT_TRIANGLEFAN,    // 共顶点的扇形三角形
    图元类型枚举标识 = D3DPT_FORCE_DWORD   // 确保枚举为32位，通常不使用。
} 图元 ;

// D3DTRANSFORMSTATETYPE
typedef enum _变换矩阵 {
    视图矩阵       = D3DTS_VIEW,           // 摄像机空间变换
    投影矩阵       = D3DTS_PROJECTION,     // 投影到屏幕空间
    纹理矩阵0      = D3DTS_TEXTURE0,       // 第0层纹理坐标变换
    纹理矩阵1      = D3DTS_TEXTURE1,       // 第1层纹理坐标变换
    纹理矩阵2      = D3DTS_TEXTURE2,       // 第2层纹理坐标变换
    纹理矩阵3      = D3DTS_TEXTURE3,       // 第3层纹理坐标变换
    纹理矩阵4      = D3DTS_TEXTURE4,       // 第4层纹理坐标变换
    纹理矩阵5      = D3DTS_TEXTURE5,       // 第5层纹理坐标变换
    纹理矩阵6      = D3DTS_TEXTURE6,       // 第6层纹理坐标变换
    纹理矩阵7      = D3DTS_TEXTURE7,       // 第7层纹理坐标变换
    变换矩阵枚举标识 = D3DTS_FORCE_DWORD   // 确保枚举为32位，通常不使用。
} 变换矩阵 ;

// 世界矩阵宏
#define 世界矩阵(索引) ((变换矩阵)((索引) + 256))  // 动态生成世界矩阵索引
#define 世界矩阵0      世界矩阵(0)   // 第0层世界矩阵
#define 世界矩阵1      世界矩阵(1)   // 第1层世界矩阵
#define 世界矩阵2      世界矩阵(2)   // 第2层世界矩阵
#define 世界矩阵3      世界矩阵(3)   // 第3层世界矩阵

// ===== 渲染状态 =====
// D3DRENDERSTATETYPE
typedef enum _渲染状态 {
    // 深度测试相关
    启用深度测试      = D3DRS_ZENABLE,     // ↑深度缓冲 (TRUE/FALSE兼容旧驱动)
    填充模式          = D3DRS_FILLMODE,     // ↑填充模式 （带有↑箭头标记可直接搜索到达，下同）
    着色模式          = D3DRS_SHADEMODE,    // ↑着色模式 （↑代表在本行上方即之前的代码中定义）
    允许深度写入      = D3DRS_ZWRITEENABLE, // TRUE开启深度缓冲写入
    启用透明度测试    = D3DRS_ALPHATESTENABLE,   // TRUE开启透明度测试
    绘制线框末像素    = D3DRS_LASTPIXEL,    // TRUE启用线框最后像素绘制

    // 混合模式相关
    源混合因子        = D3DRS_SRCBLEND,   // ↑混合因子 源颜色混合系数
    目标混合因子      = D3DRS_DESTBLEND, // ↑混合因子 目标颜色混合系数

    // 面处理相关
    面剔除模式        = D3DRS_CULLMODE,   // ↑面剔除模式 背面剔除方式
    深度测试函数      = D3DRS_ZFUNC,      // ↑比较函数 深度比较方式

    // 透明度测试相关
    透明度测试阈值    = D3DRS_ALPHAREF,   // 0-0xff的透明度参考值
    透明度测试函数    = D3DRS_ALPHAFUNC,   // ↑比较函数 透明度比较方式

    // 显示效果相关
    启用颜色抖动      = D3DRS_DITHERENABLE,   // TRUE启用颜色抖动(16位色下改善渐变)
    启用透明混合      = D3DRS_ALPHABLENDENABLE,   // TRUE启用透明通道混合
    启用雾效          = D3DRS_FOGENABLE,   // TRUE启用雾效计算
    启用镜面高光      = D3DRS_SPECULARENABLE,   // TRUE启用镜面反射高光

    // 雾效参数
    雾效颜色          = D3DRS_FOGCOLOR,   // ↑颜色值 格式雾颜色
    雾效计算模式      = D3DRS_FOGTABLEMODE,   // ↑雾化模式 雾浓度计算方式
    雾效起始距离      = D3DRS_FOGSTART,   // 线性雾起始Z值
    雾效结束距离      = D3DRS_FOGEND,   // 线性雾结束Z值
    雾效浓度          = D3DRS_FOGDENSITY,   // 指数雾密度系数

    // 高级雾效
    启用距离雾        = D3DRS_RANGEFOGENABLE,   // TRUE启用基于顶点距离的雾效

    // 模板缓冲相关
    启用模板测试      = D3DRS_STENCILENABLE,    // TRUE启用模板测试
    模板测试失败操作  = D3DRS_STENCILFAIL,      // ↑模板操作 测试失败处理方式
    模板通过深度失败  = D3DRS_STENCILZFAIL,     // ↑模板操作 模板过但深度测试失败
    模板深度均通过    = D3DRS_STENCILPASS,      // ↑模板操作 两项测试均通过
    模板测试函数      = D3DRS_STENCILFUNC,      // ↑比较函数 模板值比较方式
    模板参考值        = D3DRS_STENCILREF,       // 测试使用的参考值(0-255)
    模板比较掩码      = D3DRS_STENCILMASK,      // 测试时使用的掩码(默认0xFF)
    模板写入掩码      = D3DRS_STENCILWRITEMASK, // 写入模板缓冲的掩码(默认0xFF)

    // 材质相关
    纹理混合因子      = D3DRS_TEXTUREFACTOR,   // ↑颜色值 多纹理混合系数
	
    // 纹理坐标环绕模式
    纹理环绕模式0     = D3DRS_WRAP0,  // 第1组纹理坐标环绕规则
    纹理环绕模式1     = D3DRS_WRAP1,  // 第2组纹理坐标环绕规则
    纹理环绕模式2     = D3DRS_WRAP2,  // 第3组纹理坐标环绕规则
    纹理环绕模式3     = D3DRS_WRAP3,  // 第4组纹理坐标环绕规则
    纹理环绕模式4     = D3DRS_WRAP4,  // 第5组纹理坐标环绕规则
    纹理环绕模式5     = D3DRS_WRAP5,  // 第6组纹理坐标环绕规则
    纹理环绕模式6     = D3DRS_WRAP6,  // 第7组纹理坐标环绕规则
    纹理环绕模式7     = D3DRS_WRAP7,  // 第8组纹理坐标环绕规则

    // 光照与材质
    启用裁剪          = D3DRS_CLIPPING,  // TRUE启用几何裁剪
    启用光照          = D3DRS_LIGHTING,  // TRUE启用光照计算
    环境光颜色        = D3DRS_AMBIENT,   // ↑颜色值 全局环境光颜色
    顶点雾效模式      = D3DRS_FOGVERTEXMODE,  // ↑雾化模式 顶点雾计算方式
    顶点颜色启用      = D3DRS_COLORVERTEX,    // TRUE允许使用顶点颜色
    启用视点观察      = D3DRS_LOCALVIEWER,    // TRUE启用视点相关光照计算
    自动归一化法线    = D3DRS_NORMALIZENORMALS, // TRUE自动归一化法线向量

    // 材质来源
    漫反射材质来源    = D3DRS_DIFFUSEMATERIALSOURCE,   // ↓D3DMATERIALCOLORSOURCE 漫反射颜色来源
    镜面材质来源      = D3DRS_SPECULARMATERIALSOURCE,  // ↓D3DMATERIALCOLORSOURCE 镜面颜色来源
    环境材质来源      = D3DRS_AMBIENTMATERIALSOURCE,   // ↓D3DMATERIALCOLORSOURCE 环境光颜色来源
    自发光材质来源    = D3DRS_EMISSIVEMATERIALSOURCE,  // ↓D3DMATERIALCOLORSOURCE 自发光颜色来源

    // 顶点处理
    顶点混合模式      = D3DRS_VERTEXBLEND,  // ↓D3DVERTEXBLENDFLAGS 顶点混合方式
    启用裁剪平面      = D3DRS_CLIPPLANEENABLE,  // DWORD按位启用裁剪平面(0x1表示平面0)

    // 点绘制参数
    点大小           = D3DRS_POINTSIZE,   // float设置点图元尺寸
    最小点尺寸       = D3DRS_POINTSIZE_MIN,   // float点尺寸最小阈值
    启用点精灵       = D3DRS_POINTSPRITEENABLE,   // TRUE启用点纹理坐标自动生成
    启用点尺寸缩放   = D3DRS_POINTSCALEENABLE,   // TRUE启用点尺寸距离衰减
    点缩放系数A      = D3DRS_POINTSCALE_A,   // float点衰减公式A项
    点缩放系数B      = D3DRS_POINTSCALE_B,   // float点衰减公式B项
    点缩放系数C      = D3DRS_POINTSCALE_C,   // float点衰减公式C项

    // 多重采样
    启用多重采样抗锯齿 = D3DRS_MULTISAMPLEANTIALIAS,  // TRUE启用多重采样抗锯齿
    多重采样掩码       = D3DRS_MULTISAMPLEMASK,  // DWORD按位控制采样点启用状态

    // 高级渲染
    曲面细分边线样式 = D3DRS_PATCHEDGESTYLE,  // ↓D3DPATCHEDGESTYLE 曲面细分边界处理方式
    调试监视令牌     = D3DRS_DEBUGMONITORTOKEN,  // 调试用标识符(仅调试版本有效)
    最大点尺寸       = D3DRS_POINTSIZE_MAX,   // float点尺寸最大阈值
    启用索引顶点混合 = D3DRS_INDEXEDVERTEXBLENDENABLE,  // TRUE启用基于索引的顶点混合

    // 颜色通道控制
    颜色写入掩码     = D3DRS_COLORWRITEENABLE,  // ↓颜色通道写入 按通道启用写入

    // 动画混合
    动画过渡因子     = D3DRS_TWEENFACTOR,   // float形变动画混合系数

    // 混合操作
    混合方程式       = D3DRS_BLENDOP,   // ↑混合操作 设置混合计算公式

    // 曲面细分
    位置插值精度     = D3DRS_POSITIONDEGREE, // ↓D3DDEGREE位置插值方式(线性/立方)
    法线插值精度     = D3DRS_NORMALDEGREE,   // ↓D3DDEGREE法线插值方式(线性/二次)

    // 高级特性
    启用剪裁测试     = D3DRS_SCISSORTESTENABLE,  // TRUE启用矩形剪裁区域
    斜率深度偏移     = D3DRS_SLOPESCALEDEPTHBIAS,  // float修正深度缓存的斜率偏移量
    启用线段抗锯齿   = D3DRS_ANTIALIASEDLINEENABLE,  // TRUE启用直线抗锯齿处理

    // 自适应曲面细分
    最小细分级别     = D3DRS_MINTESSELLATIONLEVEL,  // float曲面细分最小细分度
    最大细分级别     = D3DRS_MAXTESSELLATIONLEVEL,  // float曲面细分最大细分度
    自适应细分X系数  = D3DRS_ADAPTIVETESS_X,  // float基于X屏幕坐标的细分系数
    自适应细分Y系数  = D3DRS_ADAPTIVETESS_Y,  // float基于Y屏幕坐标的细分系数
    自适应细分Z系数  = D3DRS_ADAPTIVETESS_Z,  // float基于Z深度的细分系数
    自适应细分W系数  = D3DRS_ADAPTIVETESS_W,  // float基于W参数的细分系数
	
    // 高级细分曲面
    启用自适应细分   = D3DRS_ENABLEADAPTIVETESSELLATION,  // TRUE启用硬件自适应细分

    // 双面模板测试
    启用双面模板测试  = D3DRS_TWOSIDEDSTENCILMODE,   // TRUE启用正反面独立模板测试
    逆时针面模板测试失败操作 = D3DRS_CCW_STENCILFAIL,   // ↑模板操作 逆时针面测试失败操作
    逆时针面模板通过深度失败 = D3DRS_CCW_STENCILZFAIL,   // ↑模板操作 逆时针面模板过但深度失败
    逆时针面模板深度均通过   = D3DRS_CCW_STENCILPASS,   // ↑模板操作 逆时针面两项测试均通过
    逆时针面模板测试函数     = D3DRS_CCW_STENCILFUNC,   // ↑比较函数 逆时针面比较函数

    // 多目标颜色写入
    颜色写入掩码1    = D3DRS_COLORWRITEENABLE1,   // 第2渲染目标通道掩码（需←D3DPMISCCAPS_INDEPENDENTWRITEMASKS支持）
    颜色写入掩码2    = D3DRS_COLORWRITEENABLE2,   // 第3渲染目标通道掩码
    颜色写入掩码3    = D3DRS_COLORWRITEENABLE3,   // 第4渲染目标通道掩码

    // 混合增强
    自定义混合颜色   = D3DRS_BLENDFACTOR,   // ↑颜色值 混合因子（需←D3DPBLENDCAPS_BLENDFACTOR支持）
    启用SRGB写入     = D3DRS_SRGBWRITEENABLE,   // TRUE启用sRGB伽马校正写入（需纹理支持）

    // 深度处理
    全局深度偏移     = D3DRS_DEPTHBIAS,   // float固定深度偏移量

    // 扩展纹理坐标环绕（vs_3.0+）
    纹理环绕模式8    = D3DRS_WRAP8,   // 第9组纹理坐标环绕规则，下同
    纹理环绕模式9    = D3DRS_WRAP9,
    纹理环绕模式10   = D3DRS_WRAP10,
    纹理环绕模式11   = D3DRS_WRAP11,
    纹理环绕模式12   = D3DRS_WRAP12,
    纹理环绕模式13   = D3DRS_WRAP13,
    纹理环绕模式14   = D3DRS_WRAP14,
    纹理环绕模式15   = D3DRS_WRAP15,

    // 独立Alpha混合
    分离Alpha混合启用 = D3DRS_SEPARATEALPHABLENDENABLE,  // TRUE为Alpha通道启用独立混合设置
    Alpha源混合因子   = D3DRS_SRCBLENDALPHA,  // ↑混合因子 Alpha通道源混合因子
    Alpha目标混合因子 = D3DRS_DESTBLENDALPHA,  // ↑混合因子 Alpha通道目标混合因子
    Alpha混合方程式   = D3DRS_BLENDOPALPHA,   // ↑混合操作 Alpha通道混合计算方式

    渲染状态枚举大小标识 = 0x7fffffff
} 渲染状态 ;

#define 最大同时渲染目标数 D3D_MAX_SIMULTANEOUS_RENDERTARGETS  // 最多4个MRT

// ===== 材质与通道控制 =====
// D3DMATERIALCOLORSOURCE
typedef enum _材质颜色来源 {
    使用材质颜色    = D3DMCS_MATERIAL,    // 从材质获取颜色
    使用漫反射顶点色= D3DMCS_COLOR1,      // 使用顶点漫反射颜色
    使用镜面顶点色  = D3DMCS_COLOR2,      // 使用顶点镜面反射颜色
    材质颜色来源枚举标识 = D3DMCS_FORCE_DWORD
} 材质颜色来源 ;

// 纹理环绕偏置宏汉化
#define 纹理偏移偏置 128UL  // 纹理坐标偏移基准值

// 纹理坐标轴环绕标志
#define 纹理U轴环绕 D3DWRAP_U    // 0x00000001L 启用U轴环绕
#define 纹理V轴环绕 D3DWRAP_V    // 0x00000002L 启用V轴环绕
#define 纹理W轴环绕 D3DWRAP_W    // 0x00000004L 启用W轴环绕

// 多维纹理坐标环绕标志
#define 一维纹理环绕 D3DWRAPCOORD_0  // 0x00000001L 1D纹理坐标环绕
#define 二维纹理环绕 D3DWRAPCOORD_1  // 0x00000002L 2D纹理坐标环绕
#define 三维纹理环绕 D3DWRAPCOORD_2  // 0x00000004L 3D纹理坐标环绕
#define 四维纹理环绕 D3DWRAPCOORD_3  // 0x00000008L 4D纹理坐标环绕

// 颜色通道写入
#define 允许红色通道写入 (1L<<0)  // D3DCOLORWRITEENABLE_RED
#define 允许绿色通道写入 (1L<<1)  // D3DCOLORWRITEENABLE_GREEN
#define 允许蓝色通道写入 (1L<<2)  // D3DCOLORWRITEENABLE_BLUE
#define 允许透明度通道写入 (1L<<3) // D3DCOLORWRITEENABLE_ALPHA

// ===== 纹理阶段状态 =====
// D3DTEXTURESTAGESTATETYPE
typedef enum _纹理阶段状态 {
    // 颜色通道操作
    颜色混合操作    =  D3DTSS_COLOROP,   // ↓纹理混合操作 颜色通道混合方式
    颜色参数1       =  D3DTSS_COLORARG1,  // ↓混合参数 颜色混合第一参数
    颜色参数2       =  D3DTSS_COLORARG2,  // ↓混合参数 颜色混合第二参数

    // Alpha通道操作
    透明混合操作    =  D3DTSS_ALPHAOP,    // ↓纹理混合操作 透明通道混合方式
    透明参数1       =  D3DTSS_ALPHAARG1,  // ↓混合参数 透明混合第一参数
    透明参数2       =  D3DTSS_ALPHAARG2,  // ↓混合参数 透明混合第二参数

    // 凹凸贴图参数
    凹凸映射矩阵00  =  D3DTSS_BUMPENVMAT00,  // float凹凸映射矩阵[0][0]
    凹凸映射矩阵01  =  D3DTSS_BUMPENVMAT01,  // float凹凸映射矩阵[0][1]
    凹凸映射矩阵10  =  D3DTSS_BUMPENVMAT10,  // float凹凸映射矩阵[1][0]
    凹凸映射矩阵11  =  D3DTSS_BUMPENVMAT11,  // float凹凸映射矩阵[1][1]

    // 纹理坐标设置
    纹理坐标索引    = D3DTSS_TEXCOORDINDEX,  // ↓纹理坐标源标识 指定使用的纹理坐标集索引
    凹凸亮度缩放    = D3DTSS_BUMPENVLSCALE,  // float凹凸贴图亮度缩放系数
    凹凸亮度偏移    = D3DTSS_BUMPENVLOFFSET, // float凹凸贴图亮度基准偏移

    // 纹理变换
    纹理坐标变换标志= D3DTSS_TEXTURETRANSFORMFLAGS,  // ↓D3DTEXTURETRANSFORMFLAGS控制变换方式

    // 高级混合参数
    颜色参数0       = D3DTSS_COLORARG0,  // ↓混合参数 颜色混合第三参数(三元运算)
    透明参数0       = D3DTSS_ALPHAARG0,  // ↓混合参数 透明混合第三参数(三元运算)
    结果暂存目标    = D3DTSS_RESULTARG,  // ↓混合参数 指定运算结果存储目标

    // 常量设置
    本阶段常量颜色  = D3DTSS_CONSTANT,   // ↓本阶段常量参数 类型专用常量

    纹理阶段状态枚举标识 = D3DTSS_FORCE_DWORD
} 纹理阶段状态 ;

// ===== 采样器状态 =====
// D3DSAMPLERSTATETYPE
typedef enum _采样器状态 {
    // 纹理寻址模式
    U轴寻址模式      = D3DSAMP_ADDRESSU,   // ↑纹理寻址模式 U方向
    V轴寻址模式      = D3DSAMP_ADDRESSV,   // ↑纹理寻址模式 V方向
    W轴寻址模式      = D3DSAMP_ADDRESSW,   // ↑纹理寻址模式 W方向

    // 边缘处理
    边框颜色        = D3DSAMP_BORDERCOLOR,   // ↑颜色值 纹理边缘溢出颜色

    // 过滤方式
    放大过滤器      = D3DSAMP_MAGFILTER,   // ↓D3DTEXTUREFILTER 放大时使用
    缩小过滤器      = D3DSAMP_MINFILTER,   // ↓D3DTEXTUREFILTER 缩小时使用
    Mipmap过滤方式  = D3DSAMP_MIPFILTER,   // ↓D3DTEXTUREFILTER Mipmap切换方式

    // Mipmap参数
    Mipmap细节偏移   = D3DSAMP_MIPMAPLODBIAS,   // float细节级别偏移量
    最大Mip层级     = D3DSAMP_MAXMIPLEVEL,   // DWORD 最大mipmap级别(0为最精细)

    // 高级过滤
    最大各向异性    = D3DSAMP_MAXANISOTROPY,  // DWORD各向异性过滤最大采样数

    // 颜色空间
    sRGB纹理处理    = D3DSAMP_SRGBTEXTURE,  // TRUE启用sRGB伽马校正(默认0)

    // 多纹理处理
    多元素纹理索引  = D3DSAMP_ELEMENTINDEX,  // DWORD选择纹理数组元素索引

    // 置换贴图专用
    置换贴图顶点偏移= D3DSAMP_DMAPOFFSET,  // DWORD顶点位移贴图偏移量

    采样器状态枚举标识 = D3DSAMP_FORCE_DWORD
} 采样器状态 ;

// ===== 采样器与纹理坐标 =====
// 特殊采样器宏
#define 置换贴图采样器 256  // 用于曲面细分的专用采样器

// 顶点着色器纹理采样器
#define 顶点纹理采样器〇 (置换贴图采样器+1)  // 顶点着色器第0纹理采样器
#define 顶点纹理采样器一 (置换贴图采样器+2)  // 顶点着色器第1纹理采样器
#define 顶点纹理采样器二 (置换贴图采样器+3)  // 顶点着色器第2纹理采样器
#define 顶点纹理采样器三 (置换贴图采样器+4)  // 顶点着色器第3纹理采样器

// 纹理坐标源标识
#define 透传纹理坐标            D3DTSS_TCI_PASSTHRU  // 直接使用顶点声明的纹理坐标
#define 摄像机空间法线          D3DTSS_TCI_CAMERASPACENORMAL  // 使用摄像机空间法线作为纹理坐标
#define 摄像机空间位置          D3DTSS_TCI_CAMERASPACEPOSITION  // 使用摄像机空间位置作为纹理坐标
#define 摄像机空间反射向量      D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR  // 使用摄像机空间反射向量生成坐标
#define 球面环境映射            D3DTSS_TCI_SPHEREMAP  // 自动生成球面映射纹理坐标

// ===== 纹理混合操作 =====
// D3DTEXTUREOP
typedef enum _纹理混合操作 {
    // 基础控制
    禁用本阶段        = D3DTOP_DISABLE,  // 关闭当前纹理阶段
    直接输出参数1     = D3DTOP_SELECTARG1,  // 默认操作：直接使用第一个参数
    直接输出参数2     = D3DTOP_SELECTARG2,

    // 调制类操作
    参数相乘         = D3DTOP_MODULATE,  // 参数1 * 参数2（标准调制）
    双倍强度相乘     = D3DTOP_MODULATE2X,  // (参数1 * 参数2) * 2
    四倍强度相乘     = D3DTOP_MODULATE4X,  // (参数1 * 参数2) * 4

    // 加法类操作
    直接相加         = D3DTOP_ADD,  // 参数1 + 参数2
    带符号偏移相加   = D3DTOP_ADDSIGNED,  // (参数1 + 参数2) - 0.5
    双倍符号偏移相加 = D3DTOP_ADDSIGNED2X,  // ((参数1 + 参数2) - 0.5) * 2
    参数相减         = D3DTOP_SUBTRACT, // 参数1 - 参数2（无饱和度限制）
    平滑相加         = D3DTOP_ADDSMOOTH, // 参数1 + 参数2 - 参数1*参数2

    // Alpha混合类
    漫反射Alpha混合  = D3DTOP_BLENDDIFFUSEALPHA, // 参数1*(漫反射Alpha) + 参数2*(1-漫反射Alpha)
    纹理Alpha混合    = D3DTOP_BLENDTEXTUREALPHA, // 参数1*(纹理Alpha) + 参数2*(1-纹理Alpha)
    常量Alpha混合    = D3DTOP_BLENDFACTORALPHA, // 参数1*(↑纹理混合因子 Alpha) + 参数2*(1-↑纹理混合因子 Alpha)

    // 预乘Alpha混合
    纹理预乘Alpha混合= D3DTOP_BLENDTEXTUREALPHAPM, // 参数1 + 参数2*(1-纹理Alpha)
    当前颜色Alpha混合= D3DTOP_BLENDCURRENTALPHA, // 参数1 + 参数2*(1-当前Alpha)

    // 高级混合模式
    预调制           = D3DTOP_PREMODULATE, // 与下一阶段纹理预先相乘
    颜色乘加_透明混合= D3DTOP_MODULATEALPHA_ADDCOLOR, // 参数1.RGB + 参数1.A*参数2.RGB（仅↑颜色混合操作）
    透明乘加_颜色混合= D3DTOP_MODULATECOLOR_ADDALPHA, // 参数1.RGB*参数2.RGB + 参数1.A（仅↑颜色混合操作）
    反透明乘加颜色   = D3DTOP_MODULATEINVALPHA_ADDCOLOR, // (1-参数1.A)*参数2.RGB + 参数1.RGB（仅↑颜色混合操作）
    反颜色乘加透明   = D3DTOP_MODULATEINVCOLOR_ADDALPHA, // (1-参数1.RGB)*参数2.RGB + 参数1.A（仅↑颜色混合操作）

    // 凹凸贴图相关
    环境凹凸映射     = D3DTOP_BUMPENVMAP, // 逐像素环境贴图扰动
    亮度凹凸映射     = D3DTOP_BUMPENVMAPLUMINANCE, // 带亮度通道的凹凸贴图

    // 点积运算
    三通道点积       = D3DTOP_DOTPRODUCT3, // (R1*R2 + G1*G2 + B1*B2) 结果复制到RGBA（仅↑颜色混合操作）

    // 三元运算
    乘积累加         = D3DTOP_MULTIPLYADD, // 参数0 + 参数1*参数2（需设置参数0）
    线性插值运算     = D3DTOP_LERP, // 参数0*参数1 + (1-参数0)*参数2

    纹理操作枚举标识 = D3DTOP_FORCE_DWORD
} 纹理混合操作 ;

// ===== 混合参数 =====
// 参数选择掩码与基础参数
#define 参数选择掩码        D3DTA_SELECTMASK  // 参数选择器低4位掩码
#define 漫反射颜色参数      D3DTA_DIFFUSE  // 使用顶点漫反射颜色（只读）
#define 当前阶段结果参数    D3DTA_CURRENT  // 使用前一阶段结果（可读写）
#define 纹理颜色参数        D3DTA_TEXTURE  // 使用采样纹理颜色（只读）
#define 混合因子参数        D3DTA_TFACTOR  // 使用↑纹理混合因子 值（只读）
#define 镜面反射颜色参数    D3DTA_SPECULAR  // 使用顶点镜面反射颜色（只读）
#define 临时寄存器参数      D3DTA_TEMP  // 使用临时寄存器值（可读写）
#define 本阶段常量参数      D3DTA_CONSTANT  // 使用纹理阶段常量颜色

// 参数修饰符（位操作）
#define 反选参数值         D3DTA_COMPLEMENT  // 使用(1.0 - 参数值)进行计算
#define 复制Alpha到颜色通道 D3DTA_ALPHAREPLICATE  // 将Alpha通道复制到RGB分量

// ===== 纹理过滤与顶点格式 =====
// D3DTEXTUREFILTERTYPE
typedef enum _纹理过滤方式 {
    禁用过滤        = D3DTEXF_NONE,    // 关闭过滤（仅mipmap过滤可用）
    最近点采样      = D3DTEXF_POINT,    // 邻近采样
    线性过滤        = D3DTEXF_LINEAR,    // 双线性插值
    各向异性过滤    = D3DTEXF_ANISOTROPIC,    // 各向异性过滤
    金字塔四采样    = D3DTEXF_PYRAMIDALQUAD,    // 4点帐篷式过滤
    高斯四采样      = D3DTEXF_GAUSSIANQUAD,    // 4点高斯过滤

// D3D9Ex特有功能
#if !defined(D3D_DISABLE_9EX)
    单色卷积过滤    = D3DTEXF_CONVOLUTIONMONO,    // 单色纹理卷积过滤
#endif // !D3D_DISABLE_9EX

    过滤方式枚举标识 = D3DTEXF_FORCE_DWORD
} 纹理过滤方式 ;

// 顶点处理标志
#define 处理顶点时不复制数据 (1 << 0)  // D3DPV_DONOTCOPYDATA

// ===== 灵活顶点格式(FVF)定义 =====
#define FVF_保留位〇      D3DFVF_RESERVED0  // 系统保留标志位
// 顶点坐标类型掩码（组合使用）
#define FVF_坐标类型掩码 D3DFVF_POSITION_MASK
#define 包含坐标XYZ      D3DFVF_XYZ  // 标准3D坐标(x,y,z)
#define 包含投影坐标     D3DFVF_XYZRHW  // 经过投影的坐标(x,y,z,rhw)
#define 包含1个权重坐标  D3DFVF_XYZB1  // 带1个骨骼权重的坐标(x,y,z,w1)
#define 包含2个权重坐标  D3DFVF_XYZB2  // 带2个骨骼权重的坐标
#define 包含3个权重坐标  D3DFVF_XYZB3  // 带3个骨骼权重的坐标
#define 包含4个权重坐标  D3DFVF_XYZB4  // 带4个骨骼权重的坐标
#define 包含5个权重坐标  D3DFVF_XYZB5  // 带5个骨骼权重的坐标
#define 包含四维坐标     D3DFVF_XYZW // 4D坐标(x,y,z,w)

// 顶点属性标志
#define 包含法线向量     D3DFVF_NORMAL  // 顶点法线(nx,ny,nz)
#define 包含点大小       D3DFVF_PSIZE  // 顶点尺寸数据(psize)
#define 包含漫反射颜色   D3DFVF_DIFFUSE  // 32位漫反射颜色(D3DCOLOR)
#define 包含镜面反射颜色 D3DFVF_SPECULAR  // 32位镜面反射颜色(D3DCOLOR)

// 纹理坐标数量控制
#define FVF_纹理层数掩码   D3DFVF_TEXCOUNT_MASK  // 提取纹理层数的掩码
#define FVF_纹理层数移位   D3DFVF_TEXCOUNT_SHIFT      // 纹理数量位偏移量
#define 使用0层纹理坐标    D3DFVF_TEX0  
#define 使用1层纹理坐标    D3DFVF_TEX1  
#define 使用2层纹理坐标    D3DFVF_TEX2  
#define 使用3层纹理坐标    D3DFVF_TEX3  
#define 使用4层纹理坐标    D3DFVF_TEX4  
#define 使用5层纹理坐标    D3DFVF_TEX5  
#define 使用6层纹理坐标    D3DFVF_TEX6  
#define 使用7层纹理坐标    D3DFVF_TEX7  
#define 使用8层纹理坐标    D3DFVF_TEX8  

// 特殊用途标志
#define 末权重作为四字节  D3DFVF_LASTBETA_UBYTE4 // 骨骼动画末权重作为UBYTE4类型
#define 末权重作为颜色值  D3DFVF_LASTBETA_D3DCOLOR // 骨骼动画末权重作为D3DCOLOR
#define FVF_保留位二       D3DFVF_RESERVED2  // 系统保留位

// ===== 顶点声明 =====
// D3DDECLUSAGE
typedef enum _顶点语义用途 {
    顶点位置        = D3DDECLUSAGE_POSITION,   // 顶点坐标(XYZ/W)
    混合权重        = D3DDECLUSAGE_BLENDWEIGHT,   // 骨骼动画混合权重
    混合索引        = D3DDECLUSAGE_BLENDWEIGHT,   // 骨骼动画骨骼索引
    顶点法线        = D3DDECLUSAGE_NORMAL,   // 法线向量(NX,NY,NZ)
    点大小属性      = D3DDECLUSAGE_PSIZE,   // 顶点绘制尺寸
    纹理坐标        = D3DDECLUSAGE_TEXCOORD,   // 纹理UV坐标
    切线向量        = D3DDECLUSAGE_TANGENT,   // 切线空间切线向量
    副法线向量      = D3DDECLUSAGE_BINORMAL,   // 切线空间副法线
    细分因子        = D3DDECLUSAGE_TESSFACTOR,   // 曲面细分控制参数
    变换后位置      = D3DDECLUSAGE_POSITIONT,   // 经过变换的屏幕坐标
    顶点颜色        = D3DDECLUSAGE_COLOR,  // 顶点颜色(RGBA)
    雾效因子        = D3DDECLUSAGE_FOG,  // 雾效混合系数
    深度值属性      = D3DDECLUSAGE_DEPTH,  // 自定义深度值
    采样控制参数    = D3DDECLUSAGE_SAMPLE,  // 多重采样控制
} 顶点语义用途 ;

// 顶点语义相关限制
#define 顶点语义最大值         MAXD3DDECLUSAGE		// 当前最大语义编号
#define 顶点语义索引最大值     MAXD3DDECLUSAGEINDEX	// 语义索引最大值(0-15)
#define 顶点声明最大长度       MAXD3DDECLLENGTH		// 顶点声明最大元素数(不含结束标记)

// D3DDECLMETHOD
typedef enum _顶点数据处理方法 {
    默认处理方法    = D3DDECLMETHOD_DEFAULT,   // 标准顶点数据处理
    部分U导数计算   = D3DDECLMETHOD_PARTIALU,   // 沿U方向计算部分导数
    部分V导数计算   = D3DDECLMETHOD_PARTIALV,   // 沿V方向计算部分导数
    UV交叉导数计算  = D3DDECLMETHOD_CROSSUV,   // 用于法线生成的交叉导数
    直接UV传递      = D3DDECLMETHOD_UV,   // 直接使用输入的UV坐标
    位移贴图查找    = D3DDECLMETHOD_LOOKUP,   // 通过查找表进行位移映射
    预采样位移查找  = D3DDECLMETHOD_LOOKUPPRESAMPLED,   // 使用预采样位移贴图
} 顶点数据处理方法 ;

#define 顶点数据处理方法最大值 MAXD3DDECLMETHOD

// D3DDECLTYPE
typedef enum _顶点数据类型 {
    // 基础类型
    单精度浮点一    = D3DDECLTYPE_FLOAT1,   // 1D浮点 扩展为(value, 0., 0., 1.)
    单精度浮点二    = D3DDECLTYPE_FLOAT2,   // 2D浮点 扩展为(value, value, 0., 1.)
    单精度浮点三    = D3DDECLTYPE_FLOAT3,   // 3D浮点 扩展为(value, value, value, 1.)
    单精度浮点四    = D3DDECLTYPE_FLOAT4,   // 4D浮点 精确存储

    // 压缩格式
    D3D颜色格式     = D3DDECLTYPE_D3DCOLOR,   // 4字节ARGB打包 扩展为(R, G, B, A)各通道映射到[0,1]
    四元无符号字节  = D3DDECLTYPE_UBYTE4,   // 4D无符号字节(0-255)直接存储

    // 整型格式
    有符号短整型二  = D3DDECLTYPE_SHORT2,   // 2D短整型 扩展为(value, value, 0., 1.)
    有符号短整型四  = D3DDECLTYPE_SHORT4,   // 4D短整型 直接存储

    // 规范化类型(顶点着色器2.0+)
    规范四元字节   = D3DDECLTYPE_UBYTE4N,   // 每个字节除以255.0规范化为[0,1]
    规范短整型二    = D3DDECLTYPE_SHORT2N,   // 2D短整型各除以32767.0规范化为[-1,1]
    规范短整型四    = D3DDECLTYPE_SHORT4N,  // 4D短整型各除以32767.0
    规范无符号短整型二 =D3DDECLTYPE_USHORT2N, // 2D无符号短整型各除以65535.0
    规范无符号短整型四 =D3DDECLTYPE_USHORT4N, // 4D无符号短整型各除以65535.0

    // 压缩格式
    无符号十进制三   =D3DDECLTYPE_UDEC3,  // 10/10/10无符号格式 扩展为(value, value, value, 1)
    规范十进制三     =D3DDECLTYPE_DEC3N,  // 10/10/10有符号格式 各除以511.0规范化为[-1,1]

    // 浮点压缩
    半精度浮点二    =D3DDECLTYPE_FLOAT16_2,  // 2个16位浮点数 扩展为(value, value, 0, 1)
    半精度浮点四    =D3DDECLTYPE_FLOAT16_4,  // 4个16位浮点数

    未使用类型     =D3DDECLTYPE_UNUSED,  // 占位标识符
} 顶点数据类型 ;

// 数据类型限制常量
#define 顶点数据类型最大值 D3DDECLTYPE_UNUSED

// D3DVERTEXELEMENT9
typedef struct _顶点元素定义 {
    WORD    流索引 ;     // 数据流索引（0起）
    WORD    偏移量 ;     // 本元素在数据流中的字节偏移
    BYTE    数据类型 ;   // 顶点数据类型（D3DDECLTYPE） 数据存储格式
    BYTE    处理方法 ;   // 顶点数据处理方法（D3DDECLMETHOD） 数据处理方式
    BYTE    用途 ;       // 顶点语义用途（D3DDECLUSAGE） 元素语义用途
    BYTE    用途索引 ;   // 同类语义的索引编号（如多组纹理坐标）
} 顶点元素定义 ;

// 顶点声明结束标记宏汉化
#define 顶点声明结束标记() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}

// 纹理坐标层数限制
#define 最大纹理坐标层数 8  // D3D支持的最大纹理坐标集数量

// ===== 流数据频率设置宏 =====
#define 索引数据流 D3DSTREAMSOURCE_INDEXEDDATA // 将数据流标记为索引数据（用于顶点混合）
#define 实例数据流 D3DSTREAMSOURCE_INSTANCEDATA // 将数据流标记为实例数据（用于实例化渲染）

// ===== 着色器指令 =====
// 指令掩码宏
#define D3DSI_OPCODE_MASK       0x0000FFFF // 操作码提取掩码
#define D3DSI_INSTLENGTH_MASK   0x0F000000 // 指令长度提取掩码
#define D3DSI_INSTLENGTH_SHIFT  24         // 指令长度位移量

// D3DSHADER_INSTRUCTION_OPCODE_TYPE
typedef enum _着色器指令操作码 {
    空操作         = D3DSIO_NOP,
    移动指令       = D3DSIO_MOV,
    加法指令       = D3DSIO_ADD,
    减法指令       = D3DSIO_SUB,
    乘加指令       = D3DSIO_MAD,
    乘法指令       = D3DSIO_MUL,
    倒数指令       = D3DSIO_RCP,
    平方根倒数指令 = D3DSIO_RSQ,
    三维点积指令   = D3DSIO_DP3,
    四维点积指令   = D3DSIO_DP4,
    最小值指令     = D3DSIO_MIN,
    最大值指令     = D3DSIO_MAX,
    小于置1指令    = D3DSIO_SLT,
    大于等于置1指令= D3DSIO_SGE,
    指数指令       = D3DSIO_EXP,
    对数指令       = D3DSIO_LOG,
    光照系数指令   = D3DSIO_LIT,
    距离计算指令   = D3DSIO_DST,
    线性插值指令   = D3DSIO_LRP,
    取小数部分指令 = D3DSIO_FRC,
    四阶矩阵变换指令= D3DSIO_M4x4,
    四阶转三阶矩阵 = D3DSIO_M4x3,
    三阶转四阶矩阵 = D3DSIO_M3x4,
    三阶矩阵变换指令= D3DSIO_M3x3,
    三阶转二阶矩阵 = D3DSIO_M3x2,
    函数调用指令   = D3DSIO_CALL,
    非零调用指令   = D3DSIO_CALLNZ,
    循环开始指令   = D3DSIO_LOOP,
    函数返回指令   = D3DSIO_RET,
    循环结束指令   = D3DSIO_ENDLOOP,
    标签定义指令   = D3DSIO_LABEL,
    声明资源指令   = D3DSIO_DCL,
    幂运算指令     = D3DSIO_POW,
    叉乘指令       = D3DSIO_CRS,
    符号函数指令   = D3DSIO_SGN,
    绝对值指令     = D3DSIO_ABS,
    归一化指令     = D3DSIO_NRM,
    正弦余弦指令   = D3DSIO_SINCOS,
    重复开始指令   = D3DSIO_REP,
    重复结束指令   = D3DSIO_ENDREP,
    条件判断指令   = D3DSIO_IF,
    带比较条件判断 = D3DSIO_IFC,
    否则分支指令   = D3DSIO_ELSE,
    条件结束指令   = D3DSIO_ENDIF,
    中断循环指令   = D3DSIO_BREAK,
    带条件中断循环 = D3DSIO_BREAKC,
    地址寄存器移动 = D3DSIO_MOVA,
    定义布尔常量   = D3DSIO_DEFB,
    定义整型常量   = D3DSIO_DEFI,

	// 纹理操作指令集
    纹理坐标指令     = D3DSIO_TEXCOORD,
    纹理杀除指令     = D3DSIO_TEXKILL,
    纹理采样指令     = D3DSIO_TEX,
    凹凸环境映射指令 = D3DSIO_TEXBEM,
    带亮度凹凸环境映射 = D3DSIO_TEXBEML,
    AR纹理寄存器转换 = D3DSIO_TEXREG2AR,
    GB纹理寄存器转换 = D3DSIO_TEXREG2GB,

    // 矩阵纹理操作
    三x二矩阵填充指令   = D3DSIO_TEXM3x2PAD,
    三x二矩阵纹理变换  = D3DSIO_TEXM3x2TEX,
    三x三矩阵填充指令   = D3DSIO_TEXM3x3PAD,
    三x三矩阵纹理变换  = D3DSIO_TEXM3x3TEX,

    // 特殊功能指令
    保留指令〇        = D3DSIO_RESERVED0,
    三x三镜面反射计算  = D3DSIO_TEXM3x3SPEC,
    视图空间镜面反射 = D3DSIO_TEXM3x3VSPEC,

    // 精度控制指令
    部分精度指数指令 = D3DSIO_EXPP,
    部分精度对数指令 = D3DSIO_LOGP,

    // 条件与常量
    条件选择指令     = D3DSIO_CND,
    定义浮点常量指令 = D3DSIO_DEF,

    // 高级纹理操作
    RGB纹理寄存器转换 = D3DSIO_TEXREG2RGB,
    点积纹理采样指令  = D3DSIO_TEXDP3TEX,
    三x二深度计算指令 = D3DSIO_TEXM3x2DEPTH,
    高级纹理三维点积指令  = D3DSIO_TEXDP3,
    三x三矩阵纹理通用指令 = D3DSIO_TEXM3x3,
    纹理深度输出指令  = D3DSIO_TEXDEPTH,

    // 比较与混合
    比较指令         = D3DSIO_CMP,
    凹凸环境混合指令 = D3DSIO_BEM,

    // 数学扩展
    二维点积累加指令 = D3DSIO_DP2ADD,

    // 导数计算
    X方向导数指令    = D3DSIO_DSX,
    Y方向导数指令    = D3DSIO_DSY,

    // 高级纹理采样
    带梯度纹理采样   = D3DSIO_TEXLDD,
    设置谓词指令     = D3DSIO_SETP,
    LOD纹理采样指令  = D3DSIO_TEXLDL,
    带谓词中断指令   = D3DSIO_BREAKP,

    // 特殊控制指令
    阶段分隔符       = D3DSIO_PHASE,     // 用于分离着色器阶段（VS 3.0+）
    注释指令         = D3DSIO_COMMENT,   // 着色器注释数据容器
    着色器结束标记   = D3DSIO_END,       // 着色器代码结束标志

    着色器指令枚举大小标识 = D3DSIO_FORCE_DWORD
} 着色器指令操作码 ;

// ===== 正弦余弦常数宏 =====
#define 正弦余弦常数一 D3DSINCOSCONST1 // (-1.5500992e-006f, -2.1701389e-005f, 0.0026041667f, 0.00026041668f)
#define 正弦余弦常数二 D3DSINCOSCONST2 // (-0.020833334f, -0.12500000f, 1.0f, 0.50000000f)

// ===== 着色器控制 =====
#define 并行执行修饰符 D3DSI_COISSUE  // 0x40000000 该指令与前驱指令并行执行

#define 操作码专用控制掩码 D3DSP_OPCODESPECIFICCONTROL_MASK  // 0x00ff0000
#define 操作码专用控制位移 D3DSP_OPCODESPECIFICCONTROL_SHIFT // 16

// ps_2_0纹理加载控制
#define TEXLD投影控制 D3DSI_TEXLD_PROJECT  // (0x01 << 操作码专用控制位移)
#define TEXLD偏移控制 D3DSI_TEXLD_BIAS     // (0x02 << 操作码专用控制位移)

// 动态条件比较操作枚举
// D3DSHADER_COMPARISON
typedef enum _着色器比较条件 {
    保留条件〇     = D3DSPC_RESERVED0,  // (0,0,0)
    大于条件       = D3DSPC_GT,        // (0,0,1)
    等于条件       = D3DSPC_EQ,        // (0,1,0)
    大于等于条件   = D3DSPC_GE,        // (0,1,1)
    小于条件       = D3DSPC_LT,        // (1,0,0)
    不等于条件     = D3DSPC_NE,        // (1,0,1)
    小于等于条件   = D3DSPC_LE,        // (1,1,0)
    保留条件一     = D3DSPC_RESERVED1  // (1,1,1)
} 着色器比较条件 ;

// 比较条件位操作
#define 比较条件位移 D3DSHADER_COMPARISON_SHIFT  // 同操作码专用控制位移
#define 比较条件掩码 D3DSHADER_COMPARISON_MASK   // (0x7<<比较条件位移)

// 指令断言控制
#define 断言执行标志 D3DSHADER_INSTRUCTION_PREDICATED  // (0x1 << 28)

// ===== 声明信息控制 =====
// 语义声明控制
#define 语义用途位移 D3DSP_DCL_USAGE_SHIFT  // 0
#define 语义用途掩码 D3DSP_DCL_USAGE_MASK   // 0x0000000f
#define 语义索引位移 D3DSP_DCL_USAGEINDEX_SHIFT  // 16
#define 语义索引掩码 D3DSP_DCL_USAGEINDEX_MASK   // 0x000f0000

// 纹理类型声明
#define 纹理类型位移 D3DSP_TEXTURETYPE_SHIFT  // 27
#define 纹理类型掩码 D3DSP_TEXTURETYPE_MASK   // 0x78000000

// ===== 采样器与参数令牌 =====
// D3DSAMPLER_TEXTURE_TYPE
typedef enum _采样器纹理类型 {
    未知纹理类型    = D3DSTT_UNKNOWN, // 未初始化类型
    二维纹理声明    = D3DSTT_2D,      // dcl_2d s# 声明2D纹理
    立方体纹理声明  = D3DSTT_CUBE,    // dcl_cube s# 声明立方体贴图
    体纹理声明      = D3DSTT_VOLUME,  // dcl_volume s# 声明三维体纹理
    采样器类型枚举大小标识 = D3DSTT_FORCE_DWORD
} 采样器纹理类型 ;

// ===== 参数令牌位定义 =====
#define 寄存器号掩码 D3DSP_REGNUM_MASK  // 0x000007FF

// 目标写入通道掩码
#define 写入通道_X    D3DSP_WRITEMASK_0    // 0x00010000 通道0（X/红）
#define 写入通道_Y    D3DSP_WRITEMASK_1    // 0x00020000 通道1（Y/绿）
#define 写入通道_Z    D3DSP_WRITEMASK_2    // 0x00040000 通道2（Z/蓝）
#define 写入通道_W    D3DSP_WRITEMASK_3    // 0x00080000 通道3（W/透明）
#define 全部通道掩码  D3DSP_WRITEMASK_ALL  // 0x000F0000 全部通道

// 目标参数修饰符位操作
#define 目标修饰符位移 D3DSP_DSTMOD_SHIFT  // 20
#define 目标修饰符掩码 D3DSP_DSTMOD_MASK   // 0x00F00000

// 目标参数修饰符枚举
#define 无修饰符          D3DSPDM_NONE            // (0<<目标修饰符位移) 无操作
#define 饱和限制修饰符    D3DSPDM_SATURATE        // (1<<目标修饰符位移) 钳制到[0,1]范围
#define 部分精度修饰符    D3DSPDM_PARTIALPRECISION// (2<<目标修饰符位移) 部分精度提示
#define 多重采样质心修饰符 D3DSPDM_MSAMPCENTROID  // (4<<目标修饰符位移) 使用多重采样质心坐标

// 目标移位参数
#define 目标移位量位移 D3DSP_DSTSHIFT_SHIFT  // 24
#define 目标移位量掩码 D3DSP_DSTSHIFT_MASK   // 0x0F000000

// 寄存器类型定义
#define 寄存器类型位移一 D3DSP_REGTYPE_SHIFT   // 28
#define 寄存器类型位移二 D3DSP_REGTYPE_SHIFT2  // 8
#define 寄存器类型掩码一 D3DSP_REGTYPE_MASK    // 0x70000000
#define 寄存器类型掩码二 D3DSP_REGTYPE_MASK2   // 0x00001800

// ===== 寄存器类型 =====
// D3DSHADER_PARAM_REGISTER_TYPE
typedef enum _着色器参数寄存器类型 {
    临时寄存器        = D3DSPR_TEMP,       // 临时寄存器文件（r#）
    输入寄存器        = D3DSPR_INPUT,      // 输入寄存器文件（v#）
    常量寄存器        = D3DSPR_CONST,      // 常量寄存器文件（c#）
    地址寄存器        = D3DSPR_ADDR,       // 地址寄存器（顶点着色器，a#）
    纹理寄存器        = D3DSPR_TEXTURE,    // 纹理寄存器文件（像素着色器，t#）
    光栅化寄存器      = D3DSPR_RASTOUT,    // 光栅化寄存器文件（oPos等）
    属性输出寄存器    = D3DSPR_ATTROUT,    // 属性输出寄存器（oD#等）
    纹理坐标输出寄存器 = D3DSPR_TEXCRDOUT,  // 纹理坐标输出寄存器（oT#）
    输出寄存器        = D3DSPR_OUTPUT,     // VS3.0+输出寄存器文件
    整型常量寄存器    = D3DSPR_CONSTINT,   // 整型常量寄存器（i#）
    颜色输出寄存器    = D3DSPR_COLOROUT,   // 颜色输出寄存器（oC#）
    深度输出寄存器    = D3DSPR_DEPTHOUT,   // 深度输出寄存器（oDepth）
    采样器状态寄存器  = D3DSPR_SAMPLER,    // 采样器状态寄存器（s#）
    常量寄存器组2     = D3DSPR_CONST2,     // 常量寄存器2048-4091（c#）
    常量寄存器组3     = D3DSPR_CONST3,     // 常量寄存器4096-6143（c#）
    常量寄存器组4     = D3DSPR_CONST4,     // 常量寄存器6144-8191（c#）
    布尔常量寄存器    = D3DSPR_CONSTBOOL,  // 布尔常量寄存器（b#）
    循环计数器寄存器  = D3DSPR_LOOP,       // 循环计数器寄存器（aL）
    半精度临时寄存器  = D3DSPR_TEMPFLOAT16,// 16位浮点临时寄存器（h#）
    杂项寄存器        = D3DSPR_MISCTYPE,   // 特殊单一寄存器（vPos/vFace等）
    标签寄存器        = D3DSPR_LABEL,      // 标签寄存器（用于流程控制）
    断言寄存器        = D3DSPR_PREDICATE,  // 断言寄存器（p#）

    寄存器类型枚举大小标识 = D3DSPR_FORCE_DWORD
} 着色器参数寄存器类型 ;

// ===== 寄存器与地址模式 =====
// D3DSHADER_MISCTYPE_OFFSETS
typedef enum _杂项寄存器偏移 {
    位置寄存器     = D3DSMO_POSITION,  // 像素着色器输入位置(x,y,z,rhw)
    面信息寄存器   = D3DSMO_FACE,      // 浮点型图元面信息(正反面/面积)
} 杂项寄存器偏移 ;

// D3DVS_RASTOUT_OFFSETS
typedef enum _光栅化寄存器偏移 {
    顶点位置寄存器 = D3DSRO_POSITION,  // 输出顶点位置(oPos)
    雾效因子寄存器 = D3DSRO_FOG,       // 雾效混合系数
    点大小寄存器   = D3DSRO_POINT_SIZE,// 点精灵绘制尺寸
    光栅化寄存器枚举大小标识 = D3DSRO_FORCE_DWORD
} 光栅化寄存器偏移 ;

// ===== 地址模式定义 =====
// 顶点着色器地址模式
#define 顶点地址模式位移 D3DVS_ADDRESSMODE_SHIFT  // 13
#define 顶点地址模式掩码 D3DVS_ADDRESSMODE_MASK   // (1 << 顶点地址模式位移)

// D3DVS_ADDRESSMODE_TYPE
typedef enum _顶点地址模式类型 {
    绝对地址模式   = D3DVS_ADDRMODE_ABSOLUTE,  // 直接地址访问
    相对地址模式   = D3DVS_ADDRMODE_RELATIVE,  // 基于地址寄存器的偏移访问
    顶点地址模式枚举大小标识 = D3DVS_ADDRMODE_FORCE_DWORD
} 顶点地址模式类型 ;

// 通用着色器地址模式
#define 着色器地址模式位移 D3DSHADER_ADDRESSMODE_SHIFT  // 13
#define 着色器地址模式掩码 D3DSHADER_ADDRESSMODE_MASK   // (1 << 着色器地址模式位移)

// D3DSHADER_ADDRESSMODE_TYPE
typedef enum _着色器地址模式类型 {
    绝对寻址模式   = D3DSHADER_ADDRMODE_ABSOLUTE,  // 标准寄存器访问方式
    相对寻址模式   = D3DSHADER_ADDRMODE_RELATIVE,  // 带偏移量的寄存器访问
    着色器地址模式枚举大小标识 = D3DSHADER_ADDRMODE_FORCE_DWORD
} 着色器地址模式类型 ;

// ===== Swizzle与源修饰符 =====
// Swizzle操作位定义
#define Swizzle位移     D3DVS_SWIZZLE_SHIFT  // 16
#define Swizzle掩码     D3DVS_SWIZZLE_MASK   // 0x00FF0000

// 分量来源选择宏
#define X取自X         D3DVS_X_X  // (0 << Swizzle位移)
#define X取自Y         D3DVS_X_Y  // (1 << Swizzle位移)
#define X取自Z         D3DVS_X_Z  // (2 << Swizzle位移)
#define X取自W         D3DVS_X_W  // (3 << Swizzle位移)

#define Y取自X         D3DVS_Y_X  // (0 << (Swizzle位移 + 2))
#define Y取自Y         D3DVS_Y_Y  // (1 << (Swizzle位移 + 2))
#define Y取自Z         D3DVS_Y_Z  // (2 << (Swizzle位移 + 2))
#define Y取自W         D3DVS_Y_W  // (3 << (Swizzle位移 + 2))

#define Z取自X         D3DVS_Z_X  // (0 << (Swizzle位移 + 4))
#define Z取自Y         D3DVS_Z_Y  // (1 << (Swizzle位移 + 4))
#define Z取自Z         D3DVS_Z_Z  // (2 << (Swizzle位移 + 4))
#define Z取自W         D3DVS_Z_W  // (3 << (Swizzle位移 + 4))

#define W取自X         D3DVS_W_X  // (0 << (Swizzle位移 + 6))
#define W取自Y         D3DVS_W_Y  // (1 << (Swizzle位移 + 6))
#define W取自Z         D3DVS_W_Z  // (2 << (Swizzle位移 + 6))
#define W取自W         D3DVS_W_W  // (3 << (Swizzle位移 + 6))

// 无Swizzle操作宏
#define 无Swizzle操作 D3DVS_NOSWIZZLE  // (X_X | Y_Y | Z_Z | W_W)

// ===== 像素着色器Swizzle快捷操作 =====
#define 源Swizzle位移 D3DSP_SWIZZLE_SHIFT  // 16
#define 源Swizzle掩码 D3DSP_SWIZZLE_MASK   // 0x00FF0000

// 通道复制宏
#define 复制红色通道 D3DSP_REPLICATERED  // (X,X,X,X)
#define 复制绿色通道 D3DSP_REPLICATEGREEN  // (Y,Y,Y,Y)
#define 复制蓝色通道 D3DSP_REPLICATEBLUE  // (Z,Z,Z,Z)
#define 复制透明通道 D3DSP_REPLICATEALPHA  // (W,W,W,W)

// ===== 源参数修饰符 =====
#define 源修饰符位移 D3DSP_SRCMOD_SHIFT  // 24
#define 源修饰符掩码 D3DSP_SRCMOD_MASK   // 0x0F000000

// ===== 源修饰符与版本控制 =====
// 源参数修饰符枚举
// D3DSHADER_PARAM_SRCMOD_TYPE
typedef enum _源参数修饰类型 {
    无修饰         = D3DSPSM_NONE,      // (0 << 源修饰符位移) 无操作
    取反源参数     = D3DSPSM_NEG,       // (1 << ...) 对源参数取反
    添加偏置       = D3DSPSM_BIAS,      // (2 << ...) 值 = 值 - 0.5
    偏置后取反     = D3DSPSM_BIASNEG,   // (3 << ...) 值 = -(值 - 0.5)
    符号扩展       = D3DSPSM_SIGN,      // (4 << ...) 值 = sign(值)
    符号扩展取反   = D3DSPSM_SIGNNEG,   // (5 << ...) 值 = -sign(值)
    取补码操作     = D3DSPSM_COMP,      // (6 << ...) 值 = 1.0 - 值
    双倍放大       = D3DSPSM_X2,        // (7 << ...) 值 = 值 * 2
    双倍取反       = D3DSPSM_X2NEG,     // (8 << ...) 值 = -(值 * 2)
    Z分量除法      = D3DSPSM_DZ,        // (9 << ...) 各分量除以Z
    W分量除法      = D3DSPSM_DW,        // (10 << ...) 各分量除以W
    绝对值操作     = D3DSPSM_ABS,       // (11 << ...) 值 = abs(值)
    负绝对值操作   = D3DSPSM_ABSNEG,    // (12 << ...) 值 = -abs(值)
    断言取反       = D3DSPSM_NOT,       // (13 << ...) 对断言寄存器取反(!p0)

    源修饰符枚举大小标识 = D3DSPSM_FORCE_DWORD
} 源参数修饰类型 ;

// ===== 着色器版本宏 =====
#define 像素着色器版本 D3DPS_VERSION // 0xFFFF0000|(主版本<<8)|次版本
#define 顶点着色器版本 D3DVS_VERSION

// 版本号解析宏
#define 获取主版本号 D3DSHADER_VERSION_MAJOR
#define 获取次版本号 D3DSHADER_VERSION_MINOR

// ===== 着色器注释系统 =====
#define 注释长度位移   D3DSI_COMMENTSIZE_SHIFT // 16
#define 注释长度掩码   D3DSI_COMMENTSIZE_MASK  // 0x7FFF0000

// 注释数据构造宏
#define 着色器注释 D3DSHADER_COMMENT

// ===== 着色器结束标记 =====
#define 像素着色器结束标记 D3DPS_END() // 0x0000FFFF
#define 顶点着色器结束标记 D3DVS_END() // 0x0000FFFF

// ===== 曲面与状态块 =====
// D3DBASISTYPE
typedef enum _曲面基类型 {
    贝塞尔基类型    = D3DBASIS_BEZIER,      // 使用贝塞尔曲线基函数
    B样条基类型     = D3DBASIS_BSPLINE,     // 使用B样条基函数
    CatmullRom基类型 = D3DBASIS_CATMULL_ROM, // 使用Catmull-Rom插值（D3D8中曾用名D3DBASIS_INTERPOLATE）
    曲面基类型枚举大小标识 = D3DBASIS_FORCE_DWORD
} 曲面基类型 ;

// D3DDEGREETYPE
typedef enum _曲面度数类型 {
    线性插值       = D3DDEGREE_LINEAR,     // 1次多项式插值
    二次插值       = D3DDEGREE_QUADRATIC,  // 2次多项式插值
    三次插值       = D3DDEGREE_CUBIC,      // 3次多项式插值（最常用）
    五次插值       = D3DDEGREE_QUINTIC,    // 5次多项式插值（高阶曲面）
    曲面度数枚举大小标识 = D3DDEGREE_FORCE_DWORD
} 曲面度数类型 ;

// D3DPATCHEDGESTYLE
typedef enum _面片边缘样式 {
    离散边缘       = D3DPATCHEDGE_DISCRETE,   // 不连续边缘处理
    连续边缘       = D3DPATCHEDGE_CONTINUOUS, // 保持C1连续性
    面片边缘样式枚举大小标识 = D3DPATCHEDGE_FORCE_DWORD
} 面片边缘样式 ;

// D3DSTATEBLOCKTYPE
typedef enum _状态块类型 {
    全部状态       = D3DSBT_ALL,          // 捕获所有渲染状态
    像素状态       = D3DSBT_PIXELSTATE,   // 仅捕获像素着色器相关状态
    顶点状态       = D3DSBT_VERTEXSTATE,  // 仅捕获顶点处理相关状态
    状态块类型枚举大小标识 = D3DSBT_FORCE_DWORD
} 状态块类型 ;

// ===== 顶点混合与纹理坐标 =====
// D3DVERTEXBLENDFLAGS
typedef enum _顶点混合模式枚举 {
    禁用顶点混合      = D3DVBF_DISABLE,   // 关闭顶点混合
    使用1个权重混合   = D3DVBF_1WEIGHTS,  // 2矩阵混合（需1个权重）
    使用2个权重混合   = D3DVBF_2WEIGHTS,  // 3矩阵混合（需2个权重）
    使用3个权重混合   = D3DVBF_3WEIGHTS,  // 4矩阵混合（需3个权重）
    补间动画混合      = D3DVBF_TWEENING,  // 使用D3DRS_TWEENFACTOR混合
    单矩阵混合        = D3DVBF_0WEIGHTS,  // 使用单一矩阵（权重1.0）

    顶点混合模式枚举大小标识 = D3DVBF_FORCE_DWORD
} 顶点混合模式枚举 ;

// D3DTEXTURETRANSFORMFLAGS
typedef enum _纹理变换标志 {
    禁用纹理变换      = D3DTTFF_DISABLE,   // 直接传递纹理坐标
    一维纹理坐标      = D3DTTFF_COUNT1,    // 光栅化器接收1D坐标(u)
    二维纹理坐标      = D3DTTFF_COUNT2,    // 光栅化器接收2D坐标(u,v)
    三维纹理坐标      = D3DTTFF_COUNT3,    // 光栅化器接收3D坐标(u,v,w)
    四维纹理坐标      = D3DTTFF_COUNT4,    // 光栅化器接收4D坐标(u,v,w,t)
    启用投影变换      = D3DTTFF_PROJECTED, // 坐标分量除以第n个元素

    纹理变换标志枚举大小标识 = D3DTTFF_FORCE_DWORD
} 纹理变换标志 ;

// ===== FVF纹理坐标格式定义 =====
#define 二维浮点纹理坐标 D3DFVF_TEXTUREFORMAT2  // (u,v)格式
#define 一维浮点纹理坐标 D3DFVF_TEXTUREFORMAT1  // u格式
#define 三维浮点纹理坐标 D3DFVF_TEXTUREFORMAT3  // (u,v,w)格式
#define 四维浮点纹理坐标 D3DFVF_TEXTUREFORMAT4  // (u,v,w,t)格式

// 纹理坐标维度宏
#define 三维纹理坐标尺寸 D3DFVF_TEXCOORDSIZE3
#define 二维纹理坐标尺寸 D3DFVF_TEXCOORDSIZE2
#define 四维纹理坐标尺寸 D3DFVF_TEXCOORDSIZE4
#define 一维纹理坐标尺寸 D3DFVF_TEXCOORDSIZE1

// ===== 设备与采样 =====
// D3DDEVTYPE
typedef enum _设备类型 {
    硬件设备        = D3DDEVTYPE_HAL,     // 使用硬件加速渲染
    参考设备        = D3DDEVTYPE_REF,     // 使用参考光栅器（全功能但速度慢）
    软件设备        = D3DDEVTYPE_SW,      // 使用软件模拟设备
    空参考设备      = D3DDEVTYPE_NULLREF, // 无操作的参考设备（用于测试）
    设备类型枚举大小标识 = D3DDEVTYPE_FORCE_DWORD
} 设备类型 ;

// D3DMULTISAMPLE_TYPE
typedef enum _多重采样类型 {
    无多重采样     = D3DMULTISAMPLE_NONE,        // 禁用多重采样抗锯齿
    不可屏蔽采样   = D3DMULTISAMPLE_NONMASKABLE, // 驱动程序特定的非标准采样模式
    二倍多重采样   = D3DMULTISAMPLE_2_SAMPLES,   // 2x MSAA
    三倍多重采样   = D3DMULTISAMPLE_3_SAMPLES,   // 3x MSAA
    四倍多重采样   = D3DMULTISAMPLE_4_SAMPLES,   // 4x MSAA
    五倍多重采样   = D3DMULTISAMPLE_5_SAMPLES,   // 5x MSAA
    六倍多重采样   = D3DMULTISAMPLE_6_SAMPLES,   // 6x MSAA
    七倍多重采样   = D3DMULTISAMPLE_7_SAMPLES,   // 7x MSAA
    八倍多重采样   = D3DMULTISAMPLE_8_SAMPLES,   // 8x MSAA
    九倍多重采样   = D3DMULTISAMPLE_9_SAMPLES,   // 9x MSAA
    十倍多重采样   = D3DMULTISAMPLE_10_SAMPLES,  // 10x MSAA
    十一倍多重采样 = D3DMULTISAMPLE_11_SAMPLES,  // 11x MSAA
    十二倍多重采样 = D3DMULTISAMPLE_12_SAMPLES,  // 12x MSAA
    十三倍多重采样 = D3DMULTISAMPLE_13_SAMPLES,  // 13x MSAA
    十四倍多重采样 = D3DMULTISAMPLE_14_SAMPLES,  // 14x MSAA
    十五倍多重采样 = D3DMULTISAMPLE_15_SAMPLES,  // 15x MSAA
    十六倍多重采样 = D3DMULTISAMPLE_16_SAMPLES,  // 16x MSAA

    多重采样类型枚举大小标识 = D3DMULTISAMPLE_FORCE_DWORD
} 多重采样类型 ;

// ===== 像素格式 =====
// 格式命名规则注释：
// A = 透明通道 | R = 红 | G = 绿 | B = 蓝 | X = 未使用位
// P = 调色板 | L = 亮度 | U/V = 凹凸贴图坐标 | S = 模板 | D = 深度
// 分量顺序从高位到低位，例如D3DFMT_A8L8表示高位字节是透明通道

// FourCC生成宏（保持原名）
#ifdef MAKEFOURCC
    #define 生成FourCC MAKEFOURCC
#endif

// D3DFORMAT
typedef enum _像素格式 {
    // 基础颜色
    未知格式            = D3DFMT_UNKNOWN,
    二十四位RGB格式         = D3DFMT_R8G8B8,         // 各8位RGB
    三十二位ARGB格式        = D3DFMT_A8R8G8B8,       // 带8位透明通道
    三十二位XRGB格式        = D3DFMT_X8R8G8B8,       // 保留位未使用
    十六位RGB565格式      = D3DFMT_R5G6B5,         // 5-6-5位分布
    十六位X1RGB555格式    = D3DFMT_X1R5G5B5,       // 1保留+各5位
    十六位ARGB1555格式    = D3DFMT_A1R5G5B5,       // 1透明+各5位
    十六位ARGB4444格式    = D3DFMT_A4R4G4B4,       // 各4位
    八位RGB332格式       = D3DFMT_R3G3B2,         // 3-3-2位分布
    八位透明通道格式     = D3DFMT_A8,             // 仅透明通道
    十六位ARGB8332格式    = D3DFMT_A8R3G3B2,       // A8+R3G3B2
    十六位XRGB4444格式    = D3DFMT_X4R4G4B4,       // 保留4位+各4位
    三十二位RGB10A2格式     = D3DFMT_A2B10G10R10,    // 各10位RGB+2位A
    三十二位ABGR格式        = D3DFMT_A8B8G8R8,       // 带透明通道的ABGR
    三十二位XBGR格式        = D3DFMT_X8B8G8R8,       // 无透明通道的XBGR
    三十二位GR16格式        = D3DFMT_G16R16,         // 各16位G和R
    三十二位RGB10A2格式2    = D3DFMT_A2R10G10B10,    // 另一种10-10-10-2布局
    六十四位ARGB格式        = D3DFMT_A16B16G16R16,   // 各16位通道

    // 调色板格式
    十六位调色板格式      = D3DFMT_A8P8,           // 8位透明+8位调色板索引
    八位调色板格式       = D3DFMT_P8,             // 256色调色板

    // 亮度格式
    八位亮度格式         = D3DFMT_L8,             // 单通道亮度
    十六位透明亮度格式    = D3DFMT_A8L8,           // 8透明+8亮度
    八位透明亮度格式     = D3DFMT_A4L4,           // 各4位

    // 凹凸贴图格式
    十六位UV格式          = D3DFMT_V8U8,           // 各8位dV/dU
    十六位LUV格式         = D3DFMT_L6V5U5,         // 6位亮度+各5位UV
    三十二位XLVU格式        = D3DFMT_X8L8V8U8,       // 8保留+各8位LVU
    三十二位QWVU格式        = D3DFMT_Q8W8V8U8,       // 各8位QWVU
    三十二位UV格式          = D3DFMT_V16U16,         // 各16位UV
    三十二位AWUV格式        = D3DFMT_A2W10V10U10,    // 2A+各10位WUV

    // 压缩和特殊格式
    UYVY打包格式        = 生成FourCC('U','Y','V','Y'), // YUV 4:2:2
    RGBG打包格式        = 生成FourCC('R','G','B','G'), // 交错的RGB
    YUY2打包格式        = 生成FourCC('Y','U','Y','2'), // YUV 4:2:2
    GRGB打包格式        = 生成FourCC('G','R','G','B'), // 交错的GRGB
    DXT1压缩格式        = 生成FourCC('D','X','T','1'), // BC1压缩
    DXT2压缩格式        = 生成FourCC('D','X','T','2'), // 预乘Alpha的DXT1
    DXT3压缩格式        = 生成FourCC('D','X','T','3'), // 显式Alpha的BC2
    DXT4压缩格式        = 生成FourCC('D','X','T','4'), // 插值Alpha的BC3
    DXT5压缩格式        = 生成FourCC('D','X','T','5'), // 显式Alpha的BC3

    // 深度/模板格式
    十六位可锁定深度格式  = D3DFMT_D16_LOCKABLE,   // 整数16位深度
    三十二位深度格式        = D3DFMT_D32,            // 整数32位深度
    十六位深度1位模板格式 = D3DFMT_D15S1,          // 15深度+1模板
    二十四位深度8位模板格式 = D3DFMT_D24S8,          // 常用深度模板组合
    二十四位深度保留格式    = D3DFMT_D24X8,          // 24深度+8未使用
    二十四位深度4位模板格式  = D3DFMT_D24X4S4,        // 24深度+4模板
    十六位深度格式        = D3DFMT_D16,            // 标准16位深度
    三十二位浮点深度格式    = D3DFMT_D32F_LOCKABLE,  // IEEE 754浮点深度
    二十四位浮点深度8位模板   = D3DFMT_D24FS8,         // 浮点深度+8模板

// D3D9Ex特有格式
#if !defined(D3D_DISABLE_9EX)
    三十二位可锁定深度格式  = D3DFMT_D32_LOCKABLE,   // 可锁定的32位整数深度
    八位可锁定模板格式   = D3DFMT_S8_LOCKABLE,    // 独立的8位模板缓冲区
#endif

    // 其他格式
    十六位亮度格式        = D3DFMT_L16,            // 单通道16位亮度
    顶点数据格式        = D3DFMT_VERTEXDATA,     // 专用顶点数据标识
    十六位索引格式        = D3DFMT_INDEX16,        // 16位顶点索引
    三十二位索引格式        = D3DFMT_INDEX32,        // 32位顶点索引
    六十四位四元数格式      = D3DFMT_Q16W16V16U16,  // 各16位四元数分量
    ARGB8多重加密格式   = 生成FourCC('M','E','T','1'), // 受保护视频格式

    // 浮点格式
    十六位浮点红通道        = D3DFMT_R16F,           // 半精度浮点
    三十二位浮点GR通道      = D3DFMT_G16R16F,        // 各16位浮点
    六十四位浮点ARGB格式    = D3DFMT_A16B16G16R16F, // 各16位浮点
    三十二位浮点红通道      = D3DFMT_R32F,           // 全精度浮点
    六十四位浮点GR通道      = D3DFMT_G32R32F,        // 各32位浮点
    一百二十八位浮点ARGB格式 = D3DFMT_A32B32G32R32F, // 各32位浮点
    压缩UV8格式             = D3DFMT_CxV8U8,         // 压缩的UV坐标

// D3D9Ex扩展格式
#if !defined(D3D_DISABLE_9EX)
    单色1位格式         = D3DFMT_A1,             // 1位单色+透明
    XR偏置RGB10A2格式  = D3DFMT_A2B10G10R10_XR_BIAS, // 扩展色域格式
    二进制缓冲格式      = D3DFMT_BINARYBUFFER,   // 无类型二进制数据
#endif

    像素格式枚举大小标识 = D3DFMT_FORCE_DWORD
} 像素格式 ;

// ===== 设备与资源 =====
// D3DDISPLAYMODE
typedef struct _显示模式 {
    UINT        宽度 ;           // 水平分辨率（像素）
    UINT        高度 ;           // 垂直分辨率（像素）
    UINT        刷新率 ;         // 刷新率（Hz，0表示默认）
    像素格式   像素格式 ;       // 显示格式（如 三十二位XRGB格式）
} 显示模式;

// D3DDEVICE_CREATION_PARAMETERS
typedef struct _设备创建参数 {
    UINT        显卡序号 ;       // 使用的物理显卡索引（从0开始）
    设备类型    设备类型 ;       // 设备类型（硬件/软件/参考）
    HWND        焦点窗口句柄 ;   // 接收输入的主窗口句柄
    DWORD       行为标志 ;       // 设备行为标志组合（如D3DCREATE_HARDWARE_VERTEXPROCESSING）

/*  设备创建参数& operator=(const D3DDEVICE_CREATION_PARAMETERS& other) {
        显卡序号 = other.AdapterOrdinal;
        memcpy(&设备类型, &other.DeviceType, sizeof(D3DDEVTYPE));
        焦点窗口句柄 = other.hFocusWindow;
        行为标志 = other.BehaviorFlags;
        return *this;
    }
*/
} 设备创建参数;

// D3DSWAPEFFECT
typedef enum _交换效果 {
    立即丢弃后台缓冲 = D3DSWAPEFFECT_DISCARD,  // 每帧后丢弃后台缓冲（推荐）
    页面翻转模式     = D3DSWAPEFFECT_FLIP,     // 使用翻页链（全屏模式专用）
    复制模式         = D3DSWAPEFFECT_COPY,     // 保留后台缓冲内容（需D3DPRESENTFLAG_LOCKABLE_BACKBUFFER）

// D3D9Ex特有功能
#if !defined(D3D_DISABLE_9EX)
    叠加模式         = D3DSWAPEFFECT_OVERLAY,  // 视频叠加专用模式
    扩展翻页模式     = D3DSWAPEFFECT_FLIPEX,   // 增强的翻页模式（支持多窗口）
#endif // !D3D_DISABLE_9EX

    交换效果枚举大小标识 = D3DSWAPEFFECT_FORCE_DWORD
} 交换效果;

// D3DPOOL
typedef enum _资源池类型 {
    默认资源池       = D3DPOOL_DEFAULT,    // 资源存储在显存（需手动管理）
    托管资源池       = D3DPOOL_MANAGED,    // 自动处理显存与系统内存同步
    系统内存池       = D3DPOOL_SYSTEMMEM,  // 强制存储在系统内存
    临时资源池       = D3DPOOL_SCRATCH,    // 不与设备关联的临时资源

    资源池类型枚举大小标识 = D3DPOOL_FORCE_DWORD
} 资源池类型 ;

// ===== 呈现参数 =====
#define 默认刷新率 D3DPRESENT_RATE_DEFAULT // 0x00000000 使用驱动程序默认刷新率

// D3DPRESENT_PARAMETERS
typedef struct _呈现参数 {
    UINT               后台缓冲宽度 ;          // 后台缓冲区的像素宽度（0=窗口尺寸）
    UINT               后台缓冲高度 ;          // 后台缓冲区的像素高度（0=窗口尺寸）
    像素格式           后台缓冲格式 ;          // 后台缓冲的像素格式（如 三十二位XRGB格式）
    UINT               后台缓冲数量 ;          // 后台缓冲数量（至少1，翻页链需要2+）

    多重采样类型       多重采样类型 ;        // 多重采样类型（无多重采样 等）
    DWORD              多重采样质量 ;         // 自定义采样质量级别（0为默认）

    交换效果           交换效果 ;            // 交换链缓冲管理方式（立即丢弃后台缓冲 等）
    HWND               设备窗口句柄 ;         // 关联的渲染窗口句柄
    BOOL               窗口模式 ;            // TRUE为窗口模式，FALSE为全屏
    BOOL               自动管理深度模板缓冲 ;  // TRUE时自动创建深度/模板缓冲
    像素格式           自动深度模板格式 ;     // 自动深度模板缓冲的格式（如 二十四位深度8位模板格式）
    DWORD              标志位 ;             // 组合标志位（D3DPRESENTFLAG_*）

    /* 全屏刷新率（单位Hz，窗口模式必须设为0） */
    UINT               全屏刷新率 ;         
    UINT               呈现间隔 ;           // 垂直同步间隔（D3DPRESENT_INTERVAL_*）

} 呈现参数 ;

// ===== 呈现标志位 =====
#define 可锁定后台缓冲标志     D3DPRESENTFLAG_LOCKABLE_BACKBUFFER    // 0x00000001 允许锁定后台缓冲
#define 自动丢弃深度模板标志   D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL   // 0x00000002 每帧后自动丢弃深度模板缓冲
#define 启用设备裁剪标志       D3DPRESENTFLAG_DEVICECLIP             // 0x00000004 启用硬件辅助裁剪
#define 视频呈现标志           D3DPRESENTFLAG_VIDEO                  // 0x00000010 优化视频播放呈现

/* D3D9Ex特有标志 */
#if !defined(D3D_DISABLE_9EX)
#define 禁止自动旋转标志       D3DPRESENTFLAG_NOAUTOROTATE          // 0x00000020 禁用屏幕旋转适配
#define 未修剪模式标志         D3DPRESENTFLAG_UNPRUNEDMODE          // 0x00000040 允许非标准显示模式
#define 有限RGB叠加标志        D3DPRESENTFLAG_OVERLAY_LIMITEDRGB    // 0x00000080 限制叠加层RGB范围
#define BT709色彩空间叠加标志  D3DPRESENTFLAG_OVERLAY_YCbCr_BT709   // 0x00000100 使用BT.709色彩空间
#define xvYCC扩展色域叠加标志  D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC   // 0x00000200 支持xvYCC广色域
#define 受保护内容标志         D3DPRESENTFLAG_RESTRICTED_CONTENT    // 0x00000400 呈现受DRM保护内容
#define 驱动资源共享限制标志   D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER  // 0x00000800 限制驱动级资源共享
#endif // !D3D_DISABLE_9EX

// ===== 资源与配置 =====
// 伽马矫正参数
// D3DGAMMARAMP
typedef struct _伽马斜坡 {
    WORD  红色通道[256]; // 红色分量矫正表（0-65535）
    WORD  绿色通道[256]; // 绿色分量矫正表
    WORD  蓝色通道[256]; // 蓝色分量矫正表
} 伽马斜坡;

// D3DBACKBUFFER_TYPE
typedef enum _后台缓冲类型 {
    单声道缓冲        = D3DBACKBUFFER_TYPE_MONO,  // 标准单视场缓冲
    左声道缓冲        = D3DBACKBUFFER_TYPE_LEFT,  // 立体显示左眼缓冲
    右声道缓冲        = D3DBACKBUFFER_TYPE_RIGHT, // 立体显示右眼缓冲
    
    后台缓冲枚举大小标识 = D3DBACKBUFFER_TYPE_FORCE_DWORD
} 后台缓冲类型;

// D3DRESOURCETYPE
typedef enum _资源类型 {
    显存表面资源	= D3DRTYPE_SURFACE,       // 二维表面（纹理/渲染目标）
    三维体积资源	= D3DRTYPE_VOLUME,        // 三维体数据资源
    平面纹理资源	= D3DRTYPE_TEXTURE,       // 二维纹理
    体积纹理资源	= D3DRTYPE_VOLUMETEXTURE, // 三维体纹理
    立方体纹理资源	= D3DRTYPE_CUBETEXTURE,   // 立方体贴图
    顶点缓冲资源	= D3DRTYPE_VERTEXBUFFER,  // 顶点数据缓冲
    索引缓冲资源	= D3DRTYPE_INDEXBUFFER,   // 索引数据缓冲

    资源类型枚举大小标识 = D3DRTYPE_FORCE_DWORD
} 资源类型;

// ===== 资源用途标志位 =====
#define 渲染目标用途      D3DUSAGE_RENDERTARGET  // 0x00000001L 资源作为渲染目标
#define 深度模板用途      D3DUSAGE_DEPTHSTENCIL  // 0x00000002L 资源作为深度/模板缓冲
#define 动态资源用途      D3DUSAGE_DYNAMIC       // 0x00000200L 高频更新的资源

// D3D9Ex特有用途标志
#if !defined(D3D_DISABLE_9EX)
#define 非安全资源用途    D3DUSAGE_NONSECURE     // 0x00800000L 允许非安全内容访问
#endif // !D3D_DISABLE_9EX

// ===== 资源用途 =====
// 自动生成Mipmap用途（可能返回D3DOK_NOAUTOGEN状态码）
#define 自动生成Mipmap用途    D3DUSAGE_AUTOGENMIPMAP  // 0x00000400L 
#define 位移贴图用途          D3DUSAGE_DMAP           // 0x00004000L 用于位移映射表面

// === 格式检查专用查询用途 ===（仅限←CheckDeviceFormat使用）
#define 传统凹凸贴图查询      D3DUSAGE_QUERY_LEGACYBUMPMAP      // 0x00008000L
#define sRGB读取支持查询      D3DUSAGE_QUERY_SRGBREAD           // 0x00010000L
#define 纹理过滤支持查询      D3DUSAGE_QUERY_FILTER             // 0x00020000L  
#define sRGB写入支持查询      D3DUSAGE_QUERY_SRGBWRITE          // 0x00040000L
#define 像素混合阶段后查询     D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING // 0x00080000L
#define 顶点纹理支持查询       D3DUSAGE_QUERY_VERTEXTEXTURE      // 0x00100000L
#define 环绕与Mip支持查询     D3DUSAGE_QUERY_WRAPANDMIP         // 0x00200000L

// === 顶点/索引缓冲专用用途 ===
#define 只写用途              D3DUSAGE_WRITEONLY          // 0x00000008L 优化写操作
#define 软件处理用途          D3DUSAGE_SOFTWAREPROCESSING // 0x00000010L 强制软件顶点处理
#define 禁用裁剪用途          D3DUSAGE_DONOTCLIP          // 0x00000020L 禁用自动裁剪
#define 点图元用途            D3DUSAGE_POINTS             // 0x00000040L 用于点精灵/点列表
#define 矩形面片用途          D3DUSAGE_RTPATCHES          // 0x00000080L 矩形面片曲面细分
#define N面片用途            D3DUSAGE_NPATCHES           // 0x00000100L N-patch曲面细分

// === D3D9Ex扩展用途 ===
#if !defined(D3D_DISABLE_9EX)
#define 文本API用途           D3DUSAGE_TEXTAPI            // 0x10000000L GDI互操作用途
#define 受保护内容用途        D3DUSAGE_RESTRICTED_CONTENT // 0x00000800L DRM保护内容
#define 限制资源共享用途      D3DUSAGE_RESTRICT_SHARED_RESOURCE       // 0x00002000L
#define 驱动级资源共享限制用途 D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER // 0x00001000L
#endif // !D3D_DISABLE_9EX

// ===== 纹理与资源 =====
// D3DCUBEMAP_FACES
typedef enum _立方体贴图面 {
    正面X轴 = D3DCUBEMAP_FACE_POSITIVE_X,
    背面X轴 = D3DCUBEMAP_FACE_NEGATIVE_X,
    正面Y轴 = D3DCUBEMAP_FACE_POSITIVE_Y,
    背面Y轴 = D3DCUBEMAP_FACE_NEGATIVE_Y,
    正面Z轴 = D3DCUBEMAP_FACE_POSITIVE_Z,
    背面Z轴 = D3DCUBEMAP_FACE_NEGATIVE_Z,
    立方体贴图面枚举大小标识 = D3DCUBEMAP_FACE_FORCE_DWORD
} 立方体贴图面;

// 资源锁定标志
#define 锁定只读       D3DLOCK_READONLY         // 对应原始D3DLOCK_READONLY
#define 锁定并丢弃     D3DLOCK_DISCARD          // 允许GPU继续使用原资源副本
#define 锁定不覆盖     D3DLOCK_NOOVERWRITE      // 仅写入未使用内存区域
#define 锁定无系统锁   D3DLOCK_NOSYSLOCK        // 不获取Win16全局锁
#define 锁定不等待     D3DLOCK_DONOTWAIT        // 资源繁忙时立即返回
#define 锁定免脏区更新 D3DLOCK_NO_DIRTY_UPDATE  // 禁用自动脏区域标记

// ===== 资源描述 =====
// D3DVERTEXBUFFER_DESC
typedef struct _顶点缓冲描述 {
    像素格式    数据格式 ;       // 对应原Format字段
    资源类型    资源类型 ;    // 固定为D3DRTYPE_VERTEXBUFFER
    DWORD       用途标识 ;        // 原Usage字段（如D3DUSAGE_DYNAMIC）
    资源池类型  内存池类型 ;      // 原Pool字段（如D3DPOOL_DEFAULT）
    UINT        缓冲区大小 ;      // 字节容量，对应Size字段
    DWORD       灵活顶点格式 ;    // FVF组合标志，对应FVF字段
} 顶点缓冲描述 ;

// D3DINDEXBUFFER_DESC
typedef struct _索引缓冲描述 {
    像素格式    索引格式 ;       // D3DFMT_INDEX16/32
    资源类型    资源类型 ;    // 固定为D3DRTYPE_INDEXBUFFER
    DWORD       用途标识 ;        // 使用方式组合标识
    资源池类型  内存池类型 ;      // 显存管理策略
    UINT        缓冲区大小 ;      // 字节容量
} 索引缓冲描述 ;

// D3DSURFACE_DESC
typedef struct _表面描述 {
    像素格式    像素格式 ;       // 原Format（D3DFMT_A8R8G8B8等）
    资源类型    资源类型 ;    // 表面类型标识
    DWORD       用途标识 ;        // 如D3DUSAGE_RENDERTARGET
    资源池类型  内存池类型 ;      // 资源存储策略
    多重采样类型 多重采样类型 ;  // MSAA采样设置
    DWORD       采样质量 ;        // 多重采样质量等级
    UINT        宽度 ;           // 水平分辨率（像素）
    UINT        高度 ;           // 垂直分辨率（像素）
} 表面描述 ;

// D3DVOLUME_DESC
typedef struct _体积纹理描述 {
    像素格式    体素格式 ;       // 三维纹理格式
    资源类型    资源类型 ;    // 固定为D3DRTYPE_VOLUME
    DWORD       用途标识 ;        // 使用方式标识
    资源池类型  内存池类型 ;      // 显存管理策略
    UINT        宽度 ;           // X轴尺寸
    UINT        高度 ;           // Y轴尺寸
    UINT        深度 ;           // Z轴尺寸
} 体积纹理描述 ;

// ===== 资源锁定与高阶图元 =====
// D3DLOCKED_RECT
typedef struct _锁定矩形 {
    INT    行跨度 ;     // 单行数据字节数（对应Pitch）
    void*  数据指针 ;   // 像素数据起始地址（对应pBits）
} 锁定矩形 ;

// D3DBOX
typedef struct _三维区域 {
    UINT   左边界 ;     // X轴起始坐标
    UINT   上边界 ;     // Y轴起始坐标
    UINT   右边界 ;     // X轴结束坐标（不包含）
    UINT   下边界 ;     // Y轴结束坐标（不包含）
    UINT   前表面 ;     // Z轴起始坐标
    UINT   后表面 ;     // Z轴结束坐标（不包含）
} 三维区域 ;

// D3DLOCKED_BOX
typedef struct _锁定体积 {
    INT    行跨度 ;     // 单行数据字节数（RowPitch）
    INT    切片跨度 ;   // 单个深度层字节数（SlicePitch）
    void*  数据指针 ;   // 体素数据起始地址
} 锁定体积 ;

// D3DRANGE
typedef struct _数据范围 {
    UINT   起始偏移 ;   // 内存起始偏移量（字节）
    UINT   数据大小 ;   // 需要操作的数据长度（字节）
} 数据范围 ;

// D3DRECTPATCH_INFO
typedef struct _矩形面片信息 {
    UINT           横向起始偏移 ; // 顶点缓冲横向起始位置
    UINT           纵向起始偏移 ; // 顶点缓冲纵向起始位置
    UINT           横向顶点数 ;   // 横向细分顶点数量
    UINT           纵向顶点数 ;   // 纵向细分顶点数量
    UINT           顶点步长 ;     // 相邻顶点数据间隔（字节）
    曲面基类型     基底类型 ;     // 曲面基底函数类型
    曲面度数类型   次数类型 ;     // 曲面多项式次数
} 矩形面片信息 ;

// D3DTRIPATCH_INFO
typedef struct _三角面片信息 {
    UINT           起始顶点偏移 ; // 顶点缓冲中的起始位置
    UINT           顶点总数 ;     // 面片所需顶点数量
    曲面基类型     基底类型 ;     // 基底函数类型
    曲面度数类型   次数类型 ;     // 多项式次数
} 三角面片信息 ;

// ===== 设备识别与状态 =====
#define 最大标识符长度 MAX_DEVICE_IDENTIFIER_STRING

// D3DADAPTER_IDENTIFIER9
typedef struct _显卡信息 {
    char    驱动名称[最大标识符长度] ;   // 原Driver字段
    char    设备描述[最大标识符长度] ;   // 原Description
    char    GDI设备名 [ 32 ] ;         // 保持与DeviceName[32]严格对应

#ifdef _WIN32
    LARGE_INTEGER   驱动版本 ;      // 原DriverVersion
#else
    DWORD          驱动版本低位 ;   // 16位系统兼容字段
    DWORD          驱动版本高位 ;
#endif

    DWORD          厂商ID ;        // PCI厂商识别码（原VendorId）
    DWORD          设备ID ;        // 设备型号标识（原DeviceId）
    DWORD          子系统ID ;      // 子系统标识（原SubSysId）
    DWORD          硬件版本 ;      // 修订号（原Revision）

    GUID           设备唯一标识 ;   // 原DeviceIdentifier
    DWORD          WHQL认证级别 ;  // 硬件质量认证等级
} 显卡信息 ;

// D3DRASTER_STATUS
typedef struct _光栅状态 {
    BOOL    垂直消隐期 ;    // TRUE表示当前处于垂直消隐期间
    UINT    当前扫描线 ;    // 当前正在扫描的输出线号（0~屏幕高度-1）
} 光栅状态 ;

// ===== 调试与查询 =====
// 调试监视器控制令牌（仅调试版有效）
// D3DDEBUGMONITORTOKENS
typedef enum _调试监视指令 {
    启用调试监视器   = D3DDMT_ENABLE,    // 激活调试信息输出
    停用调试监视器   = D3DDMT_DISABLE,   // 关闭调试信息输出
    调试监视指令枚举大小标识     = D3DDMT_FORCE_DWORD
} 调试监视指令 ;

// 异步查询类型枚举
// D3DQUERYTYPE
typedef enum _查询类型 {
    顶点缓存统计    = D3DQUERYTYPE_VCACHE,           // 需配合结束查询使用
    资源管理统计    = D3DQUERYTYPE_RESOURCEMANAGER,  // 需配合结束查询
    顶点处理统计    = D3DQUERYTYPE_VERTEXSTATS,      // 需配合结束查询
    事件同步标记    = D3DQUERYTYPE_EVENT,            // 需配合结束查询
    遮挡查询        = D3DQUERYTYPE_OCCLUSION,         // 需开始查询+结束查询
    时间戳记录      = D3DQUERYTYPE_TIMESTAMP,         // 单次结束查询
    时间不连续检测  = D3DQUERYTYPE_TIMESTAMPDISJOINT, // 开始+结束查询
    时钟频率检测    = D3DQUERYTYPE_TIMESTAMPFREQ,     // 单次结束查询
    管线耗时分析    = D3DQUERYTYPE_PIPELINETIMINGS,   // 开始+结束查询
    接口调用统计    = D3DQUERYTYPE_INTERFACETIMINGS,  // 开始+结束查询
    顶点处理耗时    = D3DQUERYTYPE_VERTEXTIMINGS,     // 开始+结束查询
    像素渲染耗时    = D3DQUERYTYPE_PIXELTIMINGS,      // 开始+结束查询
    带宽压力检测    = D3DQUERYTYPE_BANDWIDTHTIMINGS,  // 开始+结束查询
    缓存利用率统计  = D3DQUERYTYPE_CACHEUTILIZATION,  // 开始+结束查询
/* D3D9Ex专有功能 */
#if !defined(D3D_DISABLE_9EX)
    内存压力检测    = D3DQUERYTYPE_MEMORYPRESSURE,    // 开始+结束查询
#endif // !D3D_DISABLE_9EX
} 查询类型 ;

#define 结束查询      D3DISSUE_END   // (1 << 0) 标记查询结束并进入非信号状态
#define 开始查询      D3DISSUE_BEGIN // (1 << 1) 标记查询开始

#define 立即刷新查询  D3DGETDATA_FLUSH // (1 << 0) 强制刷新未完成查询

// ===== 资源统计 =====
// D3DRESOURCESTATS
typedef struct _资源统计 {
    // 瞬时统计数据（自上次Present()后的统计）
    BOOL    内存抖动标记 ;       // TRUE表示发生显存频繁交换
    DWORD   下载字节数 ;         // 资源管理器下载的近似字节数
    DWORD   被驱逐对象数 ;       // 从显存移出的资源数量
    DWORD   显存创建数 ;         // 在显存中新建的资源数量
    DWORD   最后驱逐优先级 ;     // 最后被移出资源的优先级值
    DWORD   使用中对象数 ;       // 当前被设备使用的资源总数
    DWORD   显存驻留使用数 ;     // 直接在显存中使用的资源数量

    // 持久统计数据
    DWORD   显存工作集数量 ;     // 显存中驻留的资源对象数
    DWORD   显存占用字节数 ;     // 显存中资源占用的总字节数
    DWORD   托管资源总数 ;       // 被资源管理的对象总数
    DWORD   托管资源总字节 ;     // 被管理资源的总字节数
} 资源统计 ;

#define 资源类型总数 D3DRTYPECOUNT  // 原D3DRTYPECOUNT

// D3DDEVINFO_RESOURCEMANAGER
typedef struct _资源管理器统计信息 {
#ifndef WOW64_ENUM_WORKAROUND
    资源统计 各类型统计 [ 资源类型总数 ] ;  // 按资源类型分类统计
#else
    资源统计 各类型统计 [ 8 ] ;            // WOW64兼容模式固定数组
#endif
} 资源管理器统计信息 ;

// ===== 性能分析 =====
// D3DDEVINFO_D3DVERTEXSTATS
typedef struct _顶点统计 {
    DWORD   已渲染三角形数 ;      // 未被裁剪的三角形总数（每帧）
    DWORD   裁剪生成三角形数 ;    // 通过裁剪新生成的三角形数量
} 顶点统计 ;

// D3DDEVINFO_VCACHE
typedef struct _顶点缓存优化 {
    DWORD   验证标识码 ;         // 必须返回FOUR_CC('C','A','C','H')
    DWORD   优化方法 ;          // 0=最长条带优化 1=基于顶点缓存
    DWORD   缓存容量 ;          // 目标优化缓存大小（方法1时必需）
    DWORD   重启阈值 ;          // 条带重启判定阈值（方法1时必需）
} 顶点缓存优化 ;

// D3DDEVINFO_D3D9PIPELINETIMINGS
typedef struct _管线耗时 {
    FLOAT   顶点处理耗时比 ;     // 顶点着色阶段时间占比（%）
    FLOAT   像素处理耗时比 ;     // 像素着色阶段时间占比（%）
    FLOAT   其他GPU操作耗时比 ;  // 其他GPU操作时间占比（%）
    FLOAT   GPU空闲时间比 ;      // GPU闲置时间占比（%）
} 管线耗时 ;

// D3DDEVINFO_D3D9INTERFACETIMINGS
typedef struct _接口耗时 {
    FLOAT   等待GPU使用资源时间比 ;    // 应用资源等待占比
    FLOAT   等待GPU接收指令时间比 ;    // 指令队列空闲占比
    FLOAT   维持延迟等待时间比 ;       // 保持延迟要求的等待占比
    FLOAT   独占资源等待时间比 ;       // 独占资源访问等待占比
    FLOAT   其他等待时间比 ;          // 未分类等待时间占比
} 接口耗时 ;

// D3DDEVINFO_D3D9STAGETIMINGS
typedef struct _阶段耗时 {
    FLOAT   内存操作占比 ;       // 内存读写耗时占比（%）
    FLOAT   计算操作占比 ;       // 数学运算耗时占比（%）
} 阶段耗时 ;

// D3DDEVINFO_D3D9BANDWIDTHTIMINGS
typedef struct _带宽压力 {
    FLOAT   峰值带宽利用率 ;     // 最大理论带宽使用率（%）
    FLOAT   前端上传压力比 ;     // 数据上传带宽压力（%）
    FLOAT   顶点处理压力比 ;     // 顶点处理单元负载（%）
    FLOAT   三角形装配压力比 ;   // 图元装配单元负载（%）
    FLOAT   填充率利用率;      // 像素填充率使用占比（%）
} 带宽压力 ;

// D3DDEVINFO_D3D9CACHEUTILIZATION
typedef struct _缓存效率 {
    FLOAT   纹理缓存命中率 ;     // 纹理采样缓存命中率（%）
    FLOAT   顶点后处理缓存命中率 ; // 变换后顶点缓存命中率（%）
} 缓存效率 ;

// ===== D3D9Ex扩展 =====
#if !defined(D3D_DISABLE_9EX)
// D3DMEMORYPRESSURE
typedef struct _内存压力 {
    UINT64  进程被移除内存量 ;     // 被移出进程的显存总量（单位：字节）
    UINT64  低效分配大小 ;        // 低效内存分配总量（单位：字节）
    DWORD   内存效率等级 ;        // 0-100表示内存管理效率百分比
} 内存压力 ;

// D3DCOMPOSERECTSOP
typedef enum 矩形组合操作 {
    复制操作   = D3DCOMPOSERECTS_COPY,  // 直接复制矩形区域
    或操作    = D3DCOMPOSERECTS_OR,   // 执行像素逻辑或操作
    与操作    = D3DCOMPOSERECTS_AND,  // 执行像素逻辑与操作
    取反操作  = D3DCOMPOSERECTS_NEG,  // 执行像素颜色取反
    枚举大小标识 = D3DCOMPOSERECTS_FORCE_DWORD
} 矩形组合操作 ;

// D3DCOMPOSERECTDESC
typedef struct _矩形描述 {
    USHORT  X;           // 源表面左上角X坐标
    USHORT  Y;           // 源表面左上角Y坐标
    USHORT  宽 ;            // 矩形区域宽度（原Width）
    USHORT  高 ;            // 矩形区域高度（原Height）
} 矩形描述 ;

// D3DCOMPOSERECTDESTINATION
typedef struct _目标矩形位置 {
    USHORT  源矩形索引 ;       // 引用的矩形描述数组索引（原SrcRectIndex）
    USHORT  保留对齐 ;        // 保持结构体对齐（原Reserved）
    SHORT   目标左坐标 ;       // 目标表面X坐标（原X）
    SHORT   目标顶坐标 ;       // 目标表面Y坐标（原Y）
} 目标矩形位置 ;

// 表面操作限制常量
#define 最大矩形数          D3DCOMPOSERECTS_MAXNUMRECTS  // 0xFFFF
#define 单色卷积核最大宽度   D3DCONVOLUTIONMONO_MAXWIDTH   // 7
#define 单色卷积核最大高度   D3DCONVOLUTIONMONO_MAXHEIGHT  // 同宽度
#define A1格式表面最大宽度   D3DFMT_A1_SURFACE_MAXWIDTH    // 8192
#define A1格式表面最大高度   D3DFMT_A1_SURFACE_MAXHEIGHT   // 2048

// D3DPRESENTSTATS
typedef struct _呈现统计 {
    UINT           呈现次数 ;          // 已执行的Present调用次数
    UINT           有效刷新次数 ;      // 实际刷新显示的次数
    UINT           垂直同步次数 ;      // 完成垂直同步的次数
    LARGE_INTEGER  同步CPU时间戳 ;     // QPC时间戳（单位：100纳秒）
    LARGE_INTEGER  同步GPU时间戳 ;     // GPU时间戳（频率依设备而定）
} 呈现统计 ;

// ===== 显示控制 =====
// D3DSCANLINEORDERING
typedef enum _扫描线排列 {
    未知排列方式  = D3DSCANLINEORDERING_UNKNOWN,   // 无法确定扫描模式
    逐行扫描      = D3DSCANLINEORDERING_PROGRESSIVE, // 逐行输出模式
    隔行扫描      = D3DSCANLINEORDERING_INTERLACED   // 隔行输出模式
} 扫描线排列 ;

// D3DDISPLAYMODEEX
typedef struct _显示模式Ex {
    UINT            结构体大小 ;      // sizeof(D3D显示模式扩展)
    UINT            分辨率宽度 ;      // 水平像素数
    UINT            分辨率高度 ;      // 垂直像素数
    UINT            刷新率 ;         // 以赫兹为单位的刷新率
    像素格式       像素格式 ;       // 显示缓冲区格式
    扫描线排列      扫描方式 ;       // 扫描线排列类型
} 显示模式Ex ;

// D3DDISPLAYMODEFILTER
typedef struct _显示模式过滤器 {
    UINT            结构体大小 ;      // sizeof(D3D显示模式过滤器)
    像素格式        要求格式 ;       // 必须匹配的像素格式
    扫描线排列      扫描要求 ;       // 必须匹配的扫描方式
} 显示模式过滤器 ;

// D3DDISPLAYROTATION
typedef enum _显示旋转 {
    不旋转       = D3DDISPLAYROTATION_IDENTITY,  // 0度旋转
    顺时针90度   = D3DDISPLAYROTATION_90,       // 向右旋转90度
    旋转180度    = D3DDISPLAYROTATION_180,      // 上下颠倒
    顺时针270度  = D3DDISPLAYROTATION_270       // 等效逆时针90度
} 显示旋转 ;

// 资源优先级级别定义
#define 最低优先级 D3D9_RESOURCE_PRIORITY_MINIMUM  // 0x28000000
#define 低优先级   D3D9_RESOURCE_PRIORITY_LOW      // 0x50000000
#define 普通优先级 D3D9_RESOURCE_PRIORITY_NORMAL   // 0x78000000
#define 高优先级   D3D9_RESOURCE_PRIORITY_HIGH     // 0xa0000000
#define 最高优先级 D3D9_RESOURCE_PRIORITY_MAXIMUM  // 0xc8000000

// OMAC验证结构
#define OMAC长度 D3D_OMAC_SIZE  // 16字节
// D3D_OMAC
typedef struct _D3D验证码 {
    BYTE 验证码 [ OMAC长度 ] ;      // 加密消息验证码
} D3D验证码 ;

// ===== 安全认证 =====
// D3DAUTHENTICATEDCHANNELTYPE
typedef enum _认证通道类型 {
    D3D9核心认证通道   = D3DAUTHENTICATEDCHANNEL_D3D9,           // Direct3D9系统级认证
    软件驱动认证通道   = D3DAUTHENTICATEDCHANNEL_DRIVER_SOFTWARE, // 软件渲染驱动认证
    硬件驱动认证通道   = D3DAUTHENTICATEDCHANNEL_DRIVER_HARDWARE  // GPU硬件驱动认证
} 认证通道类型 ;

// D3DAUTHENTICATEDCHANNEL_QUERY_INPUT
typedef struct _认证通道查询输入 {
    GUID    查询类型 ;          // 要执行的查询类型GUID
    HANDLE  通道句柄 ;          // 认证通道的句柄
    UINT    序列号 ;           // 查询操作的序列号 
} 认证通道查询输入 ;

// D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT
typedef struct _认证通道查询输出 {
    D3D验证码  完整性校验 ;      // OMAC验证码（原omac字段）
    GUID      查询类型 ;        // 对应的输入查询类型
    HANDLE    通道句柄 ;        // 认证通道句柄
    UINT      序列号 ;         // 匹配输入序列号
    HRESULT   操作结果 ;        // 查询返回码
} 认证通道查询输出 ;

namespace 查询类型枚举{
	extern const GUID *保护机制;
}

// D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS
typedef struct _认证通道保护标志 {
    union {
        struct {
            UINT 启用保护机制        : 1 ;  // 内容保护是否激活
            UINT 需要全屏独占        : 1 ;  // 必须全屏或覆盖模式
            UINT 保留位           : 30 ; // 未来扩展
        };
        UINT 标志值 ;  // 位标志组合值
    } ;
} 认证通道保护标志 ;

// D3DAUTHENTICATEDCHANNEL_QUERYPROTECTION_OUTPUT
typedef struct _保护状态查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询输出
    认证通道保护标志 保护标志 ;      // 当前保护状态位标志
} 保护状态查询输出 ;

namespace 查询类型枚举{
	extern const GUID *通道类型;
}

// D3DAUTHENTICATEDCHANNEL_QUERYCHANNELTYPE_OUTPUT
typedef struct _通道类型查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询输出
    认证通道类型 通道类型 ;       // 返回通道具体类型
} 通道类型查询输出 ;

namespace 查询类型枚举{
	extern const GUID *设备句柄;
}

// D3DAUTHENTICATEDCHANNEL_QUERYDEVICEHANDLE_OUTPUT
typedef struct _设备句柄查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    HANDLE        设备句柄 ;       // 认证关联的D3D设备句柄
} 设备句柄查询输出 ;

namespace 查询类型枚举{
	extern const GUID *加密会话;
}

// D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_INPUT
typedef struct _加密会话查询输入 {
    认证通道查询输入 基础输入 ;      // 标准查询参数
    HANDLE        DXVA2解码器句柄 ; // 视频加速解码器句柄
} 加密会话查询输入;

// D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_OUTPUT
typedef struct _加密会话查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    HANDLE        DXVA2解码器句柄 ; // 输入对应的解码器句柄
    HANDLE        加密会话句柄 ;    // 关联的加密会话对象
    HANDLE        关联设备句柄 ;    // 绑定设备的句柄
} 加密会话查询输出 ;

namespace 查询类型枚举{
	extern const GUID *受限共享资源进程数;
}

// D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESSCOUNT_OUTPUT
typedef struct _受限资源共享进程数输出 {
    认证通道查询输出 基础输出 ;       // 标准查询结果
    UINT         受限进程数量 ;     // 当前访问资源的受限进程数
} 受限资源共享进程数输出 ;

namespace 查询类型枚举{
	extern const GUID *受限共享资源进程;
}

// D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_INPUT
typedef struct _受限共享进程查询输入 {
    认证通道查询输入 基础输入 ;      // 标准查询参数
    UINT        进程索引 ;        // 要查询的进程位置索引
} 受限共享进程查询输入 ;

// D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE
typedef enum _进程标识类型 {
    未知进程类型   = PROCESSIDTYPE_UNKNOWN,  // 无法识别进程类型
    窗口管理器进程 = PROCESSIDTYPE_DWM,      // 桌面窗口管理器进程
    句柄标识进程   = PROCESSIDTYPE_HANDLE    // 通过句柄识别的进程
} 进程标识类型 ;

// D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_OUTPUT
typedef struct _受限共享进程查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    UINT            进程索引 ;        // 返回的进程索引
    进程标识类型    标识类型 ;        // 进程识别方式
    HANDLE          进程句柄 ;        // 关联的进程对象句柄
} 受限共享进程查询输出 ;

namespace 查询类型枚举{
	extern const GUID *非受限保护资源计数;
}

// D3DAUTHENTICATEDCHANNEL_QUERYUNRESTRICTEDPROTECTEDSHAREDRESOURCECOUNT_OUTPUT
typedef struct _非受限保护资源共享数输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    UINT          非受限资源数量 ;  // 可跨进程共享的非加密资源总数
} 非受限保护资源共享数输出 ;

namespace 查询类型枚举{
	extern const GUID *输出ID计数;
}

// D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_INPUT
typedef struct _输出ID计数查询输入 {
    认证通道查询输入 基础输入 ;      // 标准查询参数
    HANDLE      关联设备句柄 ;      // 目标D3D设备句柄
    HANDLE      加密会话句柄 ;      // 加密会话对象句柄
} 输出ID计数查询输入 ;

// D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_OUTPUT
typedef struct _输出ID计数查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    HANDLE      关联设备句柄 ;      // 验证用设备句柄
    HANDLE      加密会话句柄 ;      // 验证用会话句柄
    UINT        输出ID总数 ;       // 可用的输出标识符数量
} 输出ID计数查询输出 ;

namespace 查询类型枚举{
	extern const GUID *输出ID;
}

// D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_INPUT
typedef struct _输出ID查询输入 {
    认证通道查询输入 基础输入 ;      // 标准查询参数
    HANDLE      关联设备句柄 ;      // 目标D3D设备句柄
    HANDLE      加密会话句柄 ;      // 加密会话对象句柄
    UINT        输出ID索引 ;       // 要查询的输出ID位置索引
} 输出ID查询输入 ;

// D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_OUTPUT
typedef struct _输出ID查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    HANDLE      关联设备句柄 ;      // 验证用设备句柄
    HANDLE      加密会话句柄 ;      // 验证用会话句柄
    UINT        输出ID索引 ;       // 返回的查询索引
    UINT64      输出标识符 ;       // 实际的输出ID值
} 输出ID查询输出 ;

namespace 查询类型枚举{
	extern const GUID *可访问属性;
}

// D3DBUSTYPE
typedef enum _总线类型 {
    其他总线类型              = D3DBUSTYPE_OTHER,             // 未指定总线类型
    PCI总线                   = D3DBUSTYPE_PCI,               // 传统PCI总线
    PCIX总线                  = D3DBUSTYPE_PCIX,              // PCI-X总线
    PCIE总线                  = D3DBUSTYPE_PCIEXPRESS,        // PCI Express总线
    AGP总线                   = D3DBUSTYPE_AGP,               // 加速图形端口
    // 总线实现修饰符
    芯片组内部实现             = D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET,             
    主板到芯片走线             = D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP,  
    主板到插槽走线             = D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET,
    扩展板连接器               = D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR,        
    NUAE内部扩展连接器         = D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE,
    非标准实现                 = D3DBUSIMPL_MODIFIER_NON_STANDARD                     
} 总线类型 ;

// D3DAUTHENTICATEDCHANNEL_QUERYINFOBUSTYPE_OUTPUT
typedef struct _总线类型查询输出 {
    认证通道查询输出 基础输出 ;          // 标准查询结果
    总线类型    总线类型 ;            // 图形总线的物理类型
    BOOL        支持连续块访问 ;       // 可连续内存块访问
    BOOL        支持非连续块访问 ;     // 可非连续内存块访问
} 总线类型查询输出 ;

namespace 查询类型枚举{
	extern const GUID *可访问加密GUID计数;
}

// D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUIDCOUNT_OUTPUT
typedef struct _加密GUID总数查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    UINT        加密GUID总数 ;     // 可用的加密GUID数量
} 加密GUID总数查询输出 ;

namespace 查询类型枚举{
	extern const GUID *单个加密GUID;
}

// D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_INPUT
typedef struct _加密GUID查询输入 {
    认证通道查询输入 基础输入 ;      // 标准查询参数
    UINT        加密GUID索引 ;     // 要查询的GUID位置索引
} 加密GUID查询输入 ;

// D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_OUTPUT
typedef struct _加密GUID查询输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    UINT        加密GUID索引 ;     // 返回的GUID索引
    GUID        加密标识符 ;       // 加密算法GUID
} 加密GUID查询输出 ;

namespace 查询类型枚举{
	extern const GUID *当前加密方案;
}

// D3DAUTHENTICATEDCHANNEL_QUERYUNCOMPRESSEDENCRYPTIONLEVEL_OUTPUT
typedef struct _未压缩加密方案输出 {
    认证通道查询输出 基础输出 ;      // 标准查询结果
    GUID        当前加密方案 ;     // 正在使用的加密算法标识
} 未压缩加密方案输出 ;

// === 认证通道配置结构体系列 ===
// D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT
typedef struct _认证通道配置输入 {
    D3D验证码  完整性校验 ;       // OMAC验证码
    GUID       配置类型 ;         // 配置操作类型GUID
    HANDLE     通道句柄 ;         // 认证通道句柄
    UINT       配置序号 ;         // 操作序列号 
} 认证通道配置输入 ;

// D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT
typedef struct _认证通道配置输出 {
    D3D验证码  完整性校验 ;       // OMAC验证码
    GUID       配置类型 ;         // 对应的输入配置类型
    HANDLE     通道句柄 ;         // 认证通道句柄
    UINT       配置序号 ;         // 匹配输入序列号
    HRESULT    操作结果 ;         // 配置执行返回码
} 认证通道配置输出 ;

namespace 配置类型枚举{
	extern const GUID *初始化;
}

// D3DAUTHENTICATEDCHANNEL_CONFIGUREINITIALIZE
typedef struct _认证通道初始化配置 {
    认证通道配置输入 基础参数 ;      // 基础配置参数
    UINT  起始查询序号 ;          // 查询操作起始序列号
    UINT  起始配置序号 ;          // 配置操作起始序列号
} 认证通道初始化配置 ;

namespace 配置类型枚举{
	extern const GUID *保护机制;
}

// D3DAUTHENTICATEDCHANNEL_CONFIGUREPROTECTION
typedef struct _保护机制配置参数 {
    认证通道配置输入 基础参数 ;      // 基础配置参数
    认证通道保护标志 保护标志 ;      // 要设置的保护标志位
} 保护机制配置参数 ;

namespace 配置类型枚举{
	extern const GUID *加密会话绑定;
}

// D3DAUTHENTICATEDCHANNEL_CONFIGURECRYPTOSESSION
typedef struct _加密会话绑定配置 {
    认证通道配置输入 基础参数 ;      // 基础配置参数
    HANDLE  DXVA2解码器句柄 ;      // 视频解码器实例句柄
    HANDLE  加密会话句柄 ;         // 加密会话对象句柄
    HANDLE  关联设备句柄 ;         // 目标D3D设备句柄
} 加密会话绑定配置 ;

namespace 配置类型枚举{
	extern const GUID *共享资源;
}

// D3DAUTHENTICATEDCHANNEL_CONFIGURESHAREDRESOURCE
typedef struct _认证通道资源共享配置 {
    认证通道配置输入 基础参数 ;          // 基础配置参数
    进程标识类型     进程标识类型 ;      // 进程识别方式
    HANDLE           进程句柄 ;         // 目标进程对象句柄
    BOOL             允许访问 ;         // TRUE允许共享访问
} 认证通道资源共享配置 ;

namespace 配置类型枚举{
	extern const GUID *可访问时加密;
}

// D3DAUTHENTICATEDCHANNEL_CONFIGUREUNCOMPRESSEDENCRYPTION
typedef struct _非压缩加密方案配置 {
    认证通道配置输入 基础参数 ;          // 基础配置参数
    GUID             加密方案标识 ;      // 要启用的加密算法GUID
} 非压缩加密方案配置 ;

// ==== 加密数据块描述 ====
// D3DENCRYPTED_BLOCK_INFO
typedef struct _加密块信息 {
    UINT 起始加密字节数 ;        // 数据块起始处的加密字节数
    UINT 跳过块字节数 ;          // 每个加密模式中跳过的字节数
    UINT 加密块字节数 ;          // 每个加密模式中实际加密的字节数
} 加密块信息 ;

// AES-CTR模式初始化向量
// D3DAES_CTR_IV
typedef struct _AES_CTR初始化向量 {
    UINT64  初始化向量 ;        // 大端序的128位初始化向量（高64位）
    UINT64  块计数 ;           // 大端序的块计数器（低64位）
} AES_CTR初始化向量 ;

#endif // !D3D_DISABLE_9EX
/* -- D3D9Ex 专用扩展结束 */


//关于警告禁用与内存对齐相关代码，无需汉化
#pragma pack()
#if _MSC_VER >= 1200
#pragma warning(pop)
#else
#pragma warning(default:4201)
#endif

#endif /* _D3D9TYPESZHONGWEN_H_ABCDE_ */